聚簇索引与非聚簇索引
1. 聚簇索引
聚簇索引(Clustered Index),也称聚集索引。
聚簇索引决定了表中数据的物理存储顺序。表中的数据按照聚簇索引的键值进行排序和存储。
一张表只能有一个聚簇索引,因为数据只能按照一种顺序存储。
聚簇索引的叶子节点直接存储数据行,因此查询时可以直接获取数据,无需回表。
数据按照聚簇索引的键值顺序存储,因此范围查询(如 BETWEEN
、>
、<
)效率较高。
主键默认是聚簇索引:在MySQL的InnoDB引擎中,如果没有显式定义聚簇索引,主键会自动成为聚簇索引。 如果没有主键,InnoDB会选择一个唯一的非空索引作为聚簇索引; 如果也没有,则会隐式创建一个隐藏的聚簇索引。
插入数据时,需要维护数据的物理顺序,可能导致页分裂(Page Split),影响插入性能。