mysql聚集索引和非聚集索引的区别是什么

文 / @UTHEME

MySQL的Innodb存储引擎的索引分为聚集索引和非聚集索引两大类。聚集索引索引中键值的逻辑顺序决定了表中相应行的物理顺序,确定了表中数据的物理顺序。聚集索引适用于经常需要搜索范围值的列,如日期范围内的记录。非聚集索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同,仅仅存储了对应数据的聚集索引的key。使用非聚集索引进行查询需要进行回表操作,先找到聚集索引的key,再到主键索引树上查找对应的数据。非聚集索引的存储结构类似于新华字典的偏旁字典,它的结构顺序与实际存放顺序不一定一致。

聚集索引和非聚集索引的区别主要有以下几点:

1. 索引内容不同:聚集索引是以主键创建的索引,在叶子节点存储表中的具体数据,而非聚集索引则是以非主键创建的索引,在叶子节点存储的是主键和索引列。

2. 排列顺序不同:聚集索引中表记录的排列顺序和索引的排列顺序一致,查询效率高。而非聚集索引中表记录的排列顺序和索引的排列顺序不一致。

3. 存储方式不同:聚集索引是物理上连续存在,而非聚集索引是逻辑上的连续,物理存储不连续。

4. 数量限制不同:聚集索引每张表只能有一个,而非聚集索引可以有多个。

在实际应用中,需要根据具体情况选择聚集索引和非聚集索引。如果需要经常进行范围查询,聚集索引可以提高查询效率;如果需要在多个列上建立索引,或者需要在非主键上建立索引,那么需要使用非聚集索引。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。