聚集索引和非聚集索引的区别?分别在什么情况下使用?

聚集索引和非聚集索引的根本区别是表中记录的物理顺序和索引的排列顺序是否一致

聚集索引的表中记录的物理顺序与索引的排列顺序一致

优点是查询速度快,因为一旦具有第一个索引值的记录被找到,具有连续索 引值的记录也一定物理的紧跟其后。

缺点是对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引 的顺序一致,而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度。在插入新记录时数据文件为了维持 B+Tree 的特性而频繁的 分裂调整,十分低效。

建议使用聚集索引的场合为:

A.某列包含了小数目的不同值。

B.排序和范围查找。 非聚集索引的记录的物理顺序和索引的顺序不一致。

其他方面的区别:

1.聚集索引和非聚集索引都采用了 B+树的结构,但非聚集索引的叶子层并 不与实际的数据页相重叠,而采用叶子层包含一个指向表中的记录在数据页中 的指针的方式。聚集索引的叶节点就是数据节点,而非聚集索引的叶节点仍然 是索引节点。

2.非聚集索引添加记录时,不会引起数据顺序的重组。

建议使用非聚集索引的场合为:

a.此列包含了大数目的不同值;

b.频繁更新的列

数据库索引的原理(实现)

后续补充

 

 

 

你可能感兴趣的:(mysql)