-
索引表
一张指示文件的逻辑记录和物理记录之间的对应关系的表
如下图

-
索引项
索引表中的每个记录。
每个索引项(记录)都由关键字和指针组成 -
索引文件
包括文件数据区和索引表两大部分的文件叫作索引文件
文件数据区存放主文件
索引表既可以是一级,也可以有多级索引 -
索引文件有两种:
索引顺序文件:索引项总是按关键字有序,数据区按关键字有序
索引非顺序文件:索引项总是按关键字有序,数据区不按关键字顺序排列 -
索引表是由系统程序自动生成的。
在记录输入建立数据区的同时建立一个索引表,表中的索引项按记录输入的先后次序排列,待全部记录输入完毕再对索引表进行排序。
如下图,是个索引非顺序文件:

-
索引文件的检索方式
直接存取
按关键字存取 -
检索
查找索引表,若索引表上存在该记录,则根据索引项的指示读取外存上该记录;否则说明外存上不存在该记录,也就是不需要访问外存。
一般来说,索引项的长度比主文件记录小的多,通常可以将索引表依次读入内存,由此在索引文件中进行检索只访问外存两次,一次读索引,一次读记录。
由于索引表是有序的,则查找索引表时可以用折半查找法。 -
修改
删除一个记录,仅需删除相应的索引项
插入一个记录时,应将记录置于数据区的末尾,同时在索引表的合适位置插入索引项(索引表有序)
更新记录时,应将更新后的记录置于数据区的末尾,同时修改索引表相应的索引项(保持索引表的有序性) -
多级索引表
当记录数目很大时,索引表也很大,一个物理块可能装不下,就是无法一次从外存读入内存,仍需要多次访问外存。
为此可以对索引表建立一个索引,称为查找表。
如下图b,假设下图的索引表b需要占用3个物理块的内存,每个物理块容纳3个索引

为上图b索引表建立的查找表如下

检索记录时,先查找查找表,再查索引表,然后读取记录。3次访问外存即可。
若查找表中项目还多,则可以建立更高一级索引,通常最高可有四级索引:
第三查找表 --> 第二查找表 --> 查找表 --> 索引表 --> 数据文件 -
静态索引
各级索引均为顺序表结构。
优点:结构简单
缺点:修改不方便,每次修改都要重组索引(当数据文件在使用过程中记录变动较多时,应采用动态索引) -
动态索引
索引表采用查找树表(二叉排序树,B-树,键树)或者 哈希表。
它们本身就是层次结构,无需建立多级索引
建立索引表的过程即排序的过程
插入或者删除记录时,修改索引方便
使用查找树表作索引时,查找索引所需访问的外存次数的最大值恰为查找树的深度(比较次数+1次访问外存读取主文件记录=深度) -
稠密索引
数据文件中记录不按关键字顺序排列,则必须对每个记录建立一个索引项,如此建立的索引表称之为稠密索引。
此时若索引查找不成功时不需要去查找主文件,即可以进行预查找
缺点是索引表占据的存储空间较大 -
非稠密索引
若数据文件中的记录按关键字顺序有序,则可对一组记录建立一个索引项,这种索引表称之为非稠密索引。
12.3 索引文件
最新推荐文章于 2025-10-29 00:16:20 发布
本文详细介绍了索引文件的概念,包括索引表、索引项、索引文件的类型及其检索方式,并探讨了不同类型的索引如多级索引表、静态索引、动态索引、稠密索引和非稠密索引的特点。
4268

被折叠的 条评论
为什么被折叠?



