目录:
一:线性索引【索引表】
就是将索引项集合组织为线性结构,也称为 索引表
二:稠密索引
1.定义
指在线性索引中,将数据集中的每个记录对应一个索引项
2.图形化解释
如下图所示:
稠密索引要应对的可能是成千上万的数据
因此,对于稠密索引这个索引表来说,索引项一定是按照关键码有序的排列
三:分块索引
1.定义
对数据集进行有序分块
并将每块对应一个索引项
其中,分块有序 指的是把数据集的记录分成若干块
并且这些块需要满足 块内无序 和 块间有序 这两个条件
注意理解:
稠密索引是因为索引项和数据集的记录个数相同,所以空间代价很大
如何减少索引项的个数呢?
我们可以对数据集进行分块
使其分块有序
然后再对每一块建立一个索引项(类似于图书馆的分块)
2.图形化解释
分块索引如下图所示:
3.查找步骤
在分块索引表中查找,就是分两步进行:
A:在分块索引表中查找要查关键字所在的块由于分块索引表示块间有序的
因此很容易利用二分插值等算法得到结果
B:找到关键字所在的块后根据块首指针找到对应的块
并在块中顺序查找关键码
因为块中可以是无序的,因此只能顺序查找
4.分块有序
是把数据集的记录分成了若干块,并且这些块需要满足两个条件:
(1)块内无序
每一块内的记录不要求有序
(2)块间有序
比如要求第二块记录的关键字均要大于第一块中所有记录的关键字,第三块要大于第二块。
只有块间有序才有可能在查找时带来效率
5.分块索引
对于分块有序的数据集
将每块对应一个索引项,这种索引方法叫做分块索引
分块索引结构数据项
分块索引的索引项结构分为三个数据项:
A: 最大关键码--存储每一块中的最大关键字
B: 块长--存储每一块中记录的个数以便于循环时使用
C: 块首地址--用于指向块首数据元素的指针
便于开始对这一块中记录进行遍历
四:倒排索引
指的是索引项具备 次关键码 和 记录号表 两个字段
且记录号表存储具有相同次关键字的所有记录的记录号(可以是指向记录的指针或者是该记录的主关键字)
则称这样的索引方法为 倒排索引(inverted index)
之所以成为倒排索引,是因为其是有属性值来确定记录位置
而不是由记录来确定属性值(即通过内容关键字来查找文章,而不是由文章来查找其内容关键字)
五:多重表
若不仅要按主关键码进行查找
还要按次关键码按给定码值或给定取值范围进行查找
则需在建立主索引的同时,也建立次关键码索引
六:倒排表
索引项包括次关键码的值和具有该值的各记录的地址
或包括次关键码的一个取值范围和取值在该范围内的所有记录的地址
优缺点
优点:
(1)既适合主关键码查找,也适合次关键码的查找
(2)查找速度较快
(3)没有要求对主文件中次关键码相同的记录建立链接
因而不需要对主文件进行修改
故其使用和维护简单方便
缺点:
(1)由于记录号表是不定长的,故处理起来不太方便
(2)由于倒排表的记录号表中记录号要求有序
这对在主文件中进行插入和删除记录操作带来相应处理上的工作量
参考地址:
https://blog.csdn.net/qq_22238021/article/details/78261630?utm_source=app