DBMS中multilevel indexing(多级索引)与secondary indexing(二级索引)的区别
多级索引与二级索引的核心差异
二者本质是不同分类维度下的索引概念,不存在互斥关系,核心差异如下:
- 分类逻辑完全不同
多级索引是按照索引的存储组织方式划分的类别,核心特征是索引本身被拆分为多层级结构存储;二级索引是按照索引和主键的关联关系划分的类别,也叫辅助索引,核心特征是索引键不是表的主键/聚簇键。 - 功能定位完全不同
多级索引的出现是为了解决单层索引体积过大、无法全部加载到内存、单次查询IO次数过高的问题,我们常用的B+树就是典型的多级索引实现,既可以用来承载主键索引,也可以用来承载二级索引。
二级索引的出现是为了加速非主键字段的查询,索引条目通常存储对应行的主键值,查询时需要先查二级索引拿到主键,再回表查主键索引获取完整行数据,和索引本身是单层还是多层结构无关。 - 二者可叠加使用
同一个索引可以同时满足两类索引的定义:比如基于用户表手机号字段建立的B+树索引,既是二级索引(索引键为非主键),也是多级索引(用B+树多层结构存储)。
简单举例区分:
假设你有一张用户表,id为主键,email为普通字段:
- 基于id构建的B+树主键索引:属于多级索引,不属于二级索引
- 基于email构建的B+树辅助索引:既属于多级索引,也属于二级索引
- 基于email构建的单层有序数组索引:属于二级索引,不属于多级索引
内容的提问来源于stack exchange,提问作者ralph0609
相关产品推荐
相关产品推荐

