DBMS索引技术咨询:主索引、二级索引等相关疑问
数据库索引相关问题解答
二级索引是否适用于未排序的数据?
二级索引完全可以适用于未排序的数据。
二级索引是独立于主索引的索引结构,它的搜索键可以是任意非主键/候选键的列,不受原表数据排序状态的影响。二级索引自身会维护搜索键值的有序性,叶子节点存储键值和指向主表(或聚簇索引)的指针,查询时直接通过自身的有序结构快速定位数据,无需依赖原表的排序。比如在一张未按「姓名」排序的用户表上创建「姓名」二级索引,索引内部会自动将姓名按顺序排列,查询时直接走这个有序索引找目标数据即可。
聚簇索引是否属于主索引的一部分?
聚簇索引就是主索引的一种典型实现形式,在多数主流数据库(如MySQL InnoDB)中,主索引本身就是聚簇索引。
主索引的核心定义是基于主键/候选键、针对排序后的数据构建的核心索引;而聚簇索引的特点是索引叶子节点直接存储整行数据,且表数据本身就是按聚簇索引的键值排序的。二者本质是同一事物的不同表述:主索引是从功能定位(主键关联、主数据索引)出发,聚簇索引是从存储结构的角度描述。
稀疏索引和稠密索引的含义是什么?
- 稠密索引:索引的叶子节点为数据表中的每一条记录都建立对应的索引项,索引项的数量和表中记录数完全一致。无论记录的键值是否重复,每条记录都有一个专属索引条目,通过索引可以直接定位到对应的记录行。
- 稀疏索引:索引的叶子节点仅针对数据表中的部分记录创建索引项,通常是每个数据块的第一条记录的键值。查询时,先通过稀疏索引定位到目标数据块,再在数据块内部做顺序查找。稀疏索引的索引项数量远少于表记录数,占用存储空间更小,适合基于有序数据构建(比如主索引的底层常采用稀疏索引结构)。
内容的提问来源于stack exchange,提问作者Mohit Dulani
相关产品推荐
相关产品推荐

