首页 > 其他 > 详细

高性能索引

时间:2016-01-10 10:27:15      阅读:170      评论:0      收藏:0      [点我收藏+]

技术分享

B-Tree索引

基本原理

- 每一个叶子节点都包含指向下一个叶子节点的节点指针,有利于叶子节点范围遍历。

局限

- 如果不是按照索引的最左列开始查找,则无法使用索引。
- 不能跳过索引中的列。
- 如果查询中有某个列的范围查询,则右边所有列都无法使用索引优化查找。

哈希索引

基本原理

- 对于每一行数据,存储引擎会对所有的索引列计算一个哈希码。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。

局限

- 哈希索引数据并不是按照索引值顺序存储的,,所以无法用于排序。
- 哈希索引不支持部分索引列匹配查找,因为哈希索引始终是使用索引列的全部内容计算哈希值。
- 哈希索引只支持等值比较查询,不支持任何范围查询。
- 哈希冲突越多,索引维护操作代价越高。

独立列索引

- 索引列不能是表达式的一部分,也不能是函数参数。

前缀索引

- 在用字符串作为索引列时,选择足够长的前缀保证较高的选择性作为索引,而不是使用字符串的完整长度作为索引。

多列索引

- 选择合适的索引列顺序:将选择性最高的列放到索引最前列。

聚簇索引

基本原理

- 聚簇索引的数据行存放在索引的叶子页中。
- 一个表只能有一个聚簇索引。

优点

- 把相关数据放在一起。
- 数据访问更快。
- 使用覆盖索引扫描的查询可以直接使用页节点的主键值。

缺点

- 聚簇数据最大限度提高了IO密集应用性能,但如果数据全部放在内存中,聚簇索引没有优势。
- 插入速度严重依赖于插入顺序。
- 更新聚簇索引列的代价非常高。
- 聚簇索引可能会导致全表扫描变慢。尤其是行比较稀疏,或者由于页分裂导致数据存储不连续的时候。

覆盖索引

名词解释

- 如果一个索引包含所有需要查询的字段的值称之为覆盖索引。

高性能索引

原文:http://www.cnblogs.com/angerpeanut/p/5117859.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!