`
dacoolbaby
  • 浏览: 1267187 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

慎用堆表

阅读更多

有时候我们常常为了使用方便,省略建主键的建表方式。

因为很多时候,这些数据来自于外部,而且数量和增长不会很大。

 

比如是一些存储过程刷新出来的结果集。

 

那么我们就会建一个堆表。什么是堆表?

就是没有主键,也没有索引的表。

 

堆表在创建以后,数据库会以最快地速度把数据插入到磁盘中。在这个过程中,会产生磁盘碎片,数据分散的情况。

这样会大大地降低数据密度。

什么意思呢?

就是说在SELECT表T,要扫描扇区A的时候,只有10%的数据是表T的,但是为了那10%的数据,要扫描多90%不必要的数据。

我们不介意搜索引擎对表T进行全表扫描,但是数据碎片化对于数据库性能,还有磁盘性能都有很大的隐患。

 

所以,无论什么样的表,都要做成聚簇表,索引表。

也就是有索引,有主键的表。

 

稍微对比一下堆表和索引表

堆表(heap table)数据插入时时存储位置是随机的,主要是数据库内部块的空闲情况决定,获取数据是按照命中率计算,全表扫表时不见得先插入的数据先查到。

 

索引表(iot)数据存储是把表按照索引的方式存储的,数据是有序的,数据的位置是预先定好的,与插入的顺序没有关系。

 

索引表的查询效率逼堆表高(相当于查询索引的效率),插入数据的速度比堆表慢。

  

 

 

 

分享到:
评论

相关推荐

    preserve_c_code_attention!!!_在linux下请慎用rm命令_删除了一堆代_c_code.zip

    preserve_c_code_attention!!!_在linux下请慎用rm命令_删除了一堆代_c_code

    零起点学通C++多媒体范例教学代码

    7.2 慎用goto语句 7.3 while语句 7.3.1 带运算符的while语句 7.3.2 以字符为条件的while语句 7.3.3 限定while循环的次数 7.3.4 continue语句 7.3.5 break语句 7.3.6 永不休止的while循环 7.4. do……while循环 7.5 ...

    零起点学通C++学习_多媒体范例教学代码

    7.2 慎用goto语句 7.3 while语句 7.3.1 带运算符的while语句 7.3.2 以字符为条件的while语句 7.3.3 限定while循环的次数 7.3.4 continue语句 7.3.5 break语句 7.3.6 永不休止的while循环 7.4. do……while...

    校园日常清洁消毒制度.docx

    - 空调滤网每月清洁消毒一次,疫情防控期间慎用中央空调。 - 地面、物体表面使用含氯消毒剂清洁,尤其关注高频接触部位。 - 食堂餐具、厨具清洁消毒,可用高温或消毒柜处理。 - 提供充足洗手设施,鼓励学生定期...

    东北大学_数字媒体_数据结构_网上拍卖系统_实验5+报告

    2. **排序算法**:出价的处理需要实时更新最高价,可以使用堆(最大堆)来保持当前最高出价。 3. **链表与队列**:拍卖系统中的出价可能需要按时间顺序排列,链表可以方便地添加和删除元素,而队列则用于处理出价的...

    從新手到高手C++全方位學習

    7.2 慎用goto語句 7.3 while語句 7.3.1 帶運算符的while語句 7.3.2 以字符為條件的while語句 7.3.3 限定while循環的次數 7.3.4 continue語句 7.3.5 break語句 7.3.6 永不休止的while循環 7.4 do… while循環 7.5 for...

    JAVA优化编程

    - **慎用反射**:反射操作通常比直接调用方法慢,尽量减少反射的使用。 - **元数据缓存**:使用Class.getDeclaredMethods等方法时,可以缓存结果以提高性能。 8. **监控与分析**: - **使用JVisualVM**:这是一...

    flash8教程第13章动画的输出与发布.ppt

    - **慎用位图动作**:位图处理不如矢量图形高效,尽量减少位图动作。 - **减小文档尺寸**:文档越小,文件体积越小。 - **位图导入优化**:导入位图前,先缩小尺寸并转为JPEG格式。 - **声音导入优化**:使用MP3格式...

    突破程序员基本功的16课.part2

    5.5.1 慎用字符的Unicode转义形式 5.5.2 中止行注释的转义字符 5.6 泛型可能引起的错误 5.6.1 原始类型变量的赋值 5.6.2 原始类型带来的擦除 5.6.3 创建泛型数组的陷阱 5.7 正则表达式的陷阱 5.8 多线程的...

    Java数据结构和算法(第二版)

    简介 第1章 综述 数据结构和算法能起到什么作用? 数据结构的概述 ...第11章 哈希表 第12章 堆 第13章 图 第14章 带权图 第15章 应用场合 附录A 运行专题applet和示例程序 附录B 进一步学习 附录C 问题答案

    怎样提高代码效率(Java).do

    11. 慎用异常 异常对性能不利,抛出异常首先要创建一个新的对象,影响性能。 12. 不要在循环中使用 Try {} catch() {} 不要在循环中使用 Try {} catch() {},应把其放置在最外层。 13. 使用 StringBuffer ...

    26.1、代码优化1

    - **慎用toString()**:对数组调用toString()可能得不到预期结果,对集合使用则可以显示内容。 5. **线程相关**: - **同步控制**:使用同步代码块代替同步方法,以减少不必要的锁竞争,提高多线程环境下的执行...

    Java编程中“为了性能”尽量要做到的一些地方

    慎用synchronized,尽量减小synchronized的方法范围 `synchronized`关键字用于实现同步操作,但会带来额外的性能开销。为了减少同步带来的负面影响,可以采取以下策略: - 尽量减小`synchronized`的作用范围,使...

    java性能优化策略.pdf

    2. **慎用Java Native Interface (JNI)**:JNI用于调用本地代码,虽然可能提高性能,但过多的JNI调用会增加开销。尽量减少JNI调用次数,并在本地处理异常,以减少计算成本。 3. **谨慎使用同步机制**:同步可能导致...

    44条Java代码优化建议

    7. 慎用异常 异常处理是Java语言的一个重要特性,但是异常的使用应当慎重。异常的创建和处理会带来额外的性能开销,因为抛出异常时需要创建一个新的异常对象,并在栈上执行跟踪信息的记录。因此,在性能敏感的代码段...

    java代码效率优化.docx

    11. 慎用异常:异常对性能不利。抛出异常首先要创建一个新的对象。 Java 中的异常处理需要创建新的对象,使得性能下降。异常只能用于错误处理,不应该用来控制程序流程。 12. 不要在循环中使用:Try { } catch() {...

    leetcode卡-Programming:编程

    任务路线:数组->链表->栈->队列->递归->排序->二分查找->哈希表->字符串->二叉树->堆->图->回溯->分治->动态规划 组队学习周期:14天甚至往上大概16天左右(周末进行整体整理讨论)(每天任务时间具体看任务情况) ...

    2014年教师资格考试|专业辅导:常见文言虚词详解五免费范文精选.docx

    - 介绍原因或目的,如:慎勿为归死,贵贱轻何薄,意为千万不要因回家而送死,身份高低又有什么重要呢? - 表示对象,即“给”、“替”,如:请以赵十五城为秦王寿,意思是请求用赵国的十五座城池为秦王祝寿。 - ...

    二、网页制作的基本设计思路[文].pdf

    - 文本排版:保持简洁,慎用闪烁文字和浏览器插件。 - 备份与更新:定期备份网站数据,及时更新内容,保持网站活力。 9. **色彩搭配**: - 色彩对浏览者的心理有显著影响,如红色代表激情,绿色象征宁静,蓝色...

Global site tag (gtag.js) - Google Analytics