稀疏索引和稠密索引

一、稀疏索引

对主文件中部分记录(形成的索引字段值),有索引项和它对应,这样的索引称为 稀疏索引.

比如 1、2、3、4、5、6、7 。稀疏索引的做法是将这 6 个值分组,1、2、3 和 4、5、6 和 7 分为不同的 3 组,取这三组中最小的索引值作为索引记录中的索引值,抽象索引记录如下:

  • 1 -> 到顺序存储 1、2、3 的起始位置的指针
  • 4 -> 到顺序存储 4、5、6 的起始位置的指针
  • 7 -> 到顺序存储 7 的起始位置的指针

1. 稀疏索引如何定位记录

定位索引字段值为 K 的记录,需要通过二分查找来确认数据位置

  • 首先找到相邻的小于 K 的最大索引字段值所对应的索引项
  • 从该索引项所对应的记录开始顺序进行检索

稀疏索引的使用要求:主文件必须是按照对应索引字段属性排序存储

相比稠密索引:空间占用更少,维护任务更轻,但速度较慢

二、稠密索引

对于主文件中每一个记录(形成的每一个索引字段值),都有一个索引项和它对应,指明该记录所在位置,这样的索引称为 稠密索引

先查索引,然后再根据索引读主文件。

这两种不同的索引实现,一种建立了索引值与数据位置的 1:1 的关系,一种建立了索引值与数据位置 1:n 的关系。在大多数场景下稠密索引查询效率更高,稀疏索引占用空间更小。