稠密索引与稀疏索引
口对于主文件中每一个记录(形成的每一个索引弓 |字段值),都有一个索引弓|项和它
对应,指明该记录所在位置。这样的索引|称稠密索引(dense index)
口对于主文件中部分记录(形成的索引|字段值),有索引项和它对应,这样的索
引称非稠密索引(undense index)或稀疏索引(sparse index)
稀疏索引如何定位记录
定位索引字段值为K的记录,需要
主索引
通常是对每一存储块有一个索引项,索引项的总数和存储表所占的存储块数目相同,存储表的每一存储块的第一条记录,又称为锚记录,或简称为块锚
辅助索引
不改变结构
聚簇索引
是指索引中邻近的记录在主文件中也是临近存储的
非聚簇索引
是指索引中临近的记录在主文件中不临近存储
倒排索引
正排索引:一个文档中包含了哪些词
倒排:一个词汇包含在哪些文档中
多级索引
当索引项比较多时,可以对索引再建立索引,以此类推,形成多级索引.
B+树索引
一种以树形数据结构来组织索引项的多级索引
一个磁盘块能存储多少个索引项
假设存储块为4KB
整数型索引字段值 = 4Byte
一个指针 = 8Byte
则
4
(
n
−
1
)
+
8
n
<
=
4096
4(n-1)+8n <= 4096
4(n−1)+8n<=4096
n取最大值 , n = 341
和B树
- B树所有索引没有重复的键值
- 指向主文件的指针不仅仅出现在叶子节点,在非叶节点也会有指针
插入键值为40的记录
(1) 寻找保存键值记录的叶子节点
(2)应插入节点已满,则申请新的节点
(3)同时调整应插入但未插入节点中的键值记录,使其均衡存放于两个叶节点中(分裂)
(4)调整指针使其指向新的叶子节点
删除键值为7的记录:
1 叶子节点但中寻找等于键值的记录,删除相应的指针及主文件中对应的记录
2 调整其左侧 (或右侧)节点及本结点中的键值记录,使其均衡存放于两个叶节点中
3 如有调整,则进一步调整其上层非叶节点,重新确定其赋值,以满足大于键值的记录都在其右侧