文章目录

  • ​​1.主索引​​
  • ​​2.辅助索引​​
  • ​​3.主索引 vs. 辅助索引​​
  • ​​4.聚簇索引和非聚簇索引​​
  • ​​5.倒排索引​​
  • ​​6.其他结构的索引​​

1.主索引

主索引通常是对每一存储块有一个索引项,索引项的总数和存储表所占的存储块数目相同,存储表的每一存储块的第一条记录,又称为锚记录(anchor record), 或简称为块锚(block anchor)

  • 主索引的索引字段值为块锚的索引字段值,而指针指向其所在的存储块。
  • 主索引是按索引字段值进行排序的一个有序文件, 通常建立在有序主文件的基于主码的排序字段上,即主索引的索引字段与主文件的排序码(主码)有对应关系
  • 主索引是稀疏索引

2.辅助索引

辅助索引 是定义在主文件的任一或多个非排序字段上的辅助存储结构。

  • 辅助索引通常是对某一非排序字段上的每一个不同值有一个索引项:索引字段即是该字段的不同值,而指针则指向包含该记录的块或该记录本身;
  • 当非排序字段为索引字段时,如该字段值不唯一,则要采用一个类似链表的结构来保存包含该字段值的所有记录的位置。
  • 辅助索引是稠密索引,其检索效率有时相当高。

3.主索引 vs. 辅助索引

一个主文件仅可以有一个主索引,但可以有多个辅助索引

主索引通常建立于主码/排序码上面;辅助索引建立于其他属性上面

可以利用主索引重新组织主文件数据,但辅助索引不能改变主文件数据

主索引是稀疏索引,辅助索引是稠密索引

(P14-P15)数据库系统下-主索引与辅助索引_链表

4.聚簇索引和非聚簇索引

聚簇索引—是指索引中邻近的记录在主文件中也是临近存储的;
非聚簇索引—是指索引中邻近的记录在主文件中不一定是邻近存储的。

  • 如果主文件的某一排序字段不是主码,则该字段上每个记录取值便不唯一,此时该字段被称为聚簇字段; 聚簇索引通常是定义在聚簇字段上。
  • 聚簇索引通常是对聚簇字段上的每一个不同值有一个索引项(索引项的总数和主文件中聚簇字段上不同值的数目相同),索引字段即是聚簇字段的不同值,由于有相同聚簇字段值的记录可能存储于若干块中,则索引项的指针指向其中的第一个块。
  • 一个主文件只能有一个聚簇索引文件,但可以有多个非聚簇索引文件
  • 主索引通常是聚簇索引(但其索引项总数不一定和主文件中聚簇字段上不同值的数目相
    同,其和主文件存储块数目相同);辅助索引通常是非聚簇索引。
  • 主索引/聚簇索引是能够决定记录存储位置的索引;而非聚簇索引则只能用于查询,指出已存储记录的位置

5.倒排索引

正排:一个文档包含了哪些词汇?

  • #Doc1, { Word1,Word2,… },哪些文档有这些关键词

倒排:一个词汇包含在哪些文档中

  • Word1, { #Doc1, #Doc2, … ,关键词在哪些文档中

6.其他结构的索引

多级索引:当索引项比较多时,可以对索引再建立索引,依此类推,形成
多级索引

  • 常见的多级索引形式,如B树/B+树索引,以树型数据结构来组织索引项等

多属性索引:索引字段由Table的多个属性值组合在一起形成的索引
散列索引:使用散列技术组织的索引
网格索引(Gridfile):使用多索引字段进行交叉联合定位与检索