稀疏索引和非聚集索的区别

稀疏索引和非聚集索引是两个不同但相关的概念。

稀疏索引(Sparse Index):

定义:索引中,索引键值(对应于表中的列值)的唯一值数量相对于表的总行数来说比较少,这样的索引称为稀疏索引。
特点:索引项数目占全表数据量的比例较低,通常低于10%。
场景:对取值范围较广的列建立索引时,往往会产生稀疏索引,如性别、部门等枚举值较少的字段。

非聚集索引(Non-Clustered Index):

定义:索引中的数据顺序与表中数据的物理顺序不同,即叶节点中除了索引键值外,还存储了该行数据的物理地址(如果是InnoDB,存储的是主键值)。
特点:一张表可以有多个非聚集索引。查询数据时需要先检索索引,再根据索引中存储的地址或主键值去表中检索数据。
场景:为非主键的列创建索引,提高基于该列的查询性能。

二者关系:

非聚集索引可以是稠密索引(Dense Index)或稀疏索引,取决于索引键在表中的唯一值占总行数的比例。
稀疏索引通常是非聚集索引,因为索引键值分布稀疏,无法与表中数据的物理顺序保持一致。
但并非所有的非聚集索引都是稀疏索引,对于唯一值较多的列建立的非聚集索引可能是稠密的。
综上,稀疏索引和非聚集索引并不是完全相同的概念,但在实际应用中,稀疏索引通常以非聚集索引的形式存在。理解二者的区别和联系,有助于更好地设计和优化数据库索引。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容