索引文件的操作
1.检索操作
检索分两步进行:
① 将外存上含有索引区的页块送人内存,查找所需记录的物理地址
② 将含有该记录的页块送人内存
注意:
①索引表不大时,索引表可一次读入内存,在索引文件中检索只需两次访问外存:一次读索引,一次读记录。
②由于索引表有序,对索引表的查找可用顺序查找或二分查找等方法。
2.更新操作
(1) 插入:
将插入记录置于数据区的末尾,并在索引表中插入索引项;
(2) 删除:
删去相应的索引项;
注意:
修改主关键字时,要同时修改索引表。
利用查找表建立多级索引
1.查找表
对索引表建立的索引,称为查找表。查找表的建立可以为占据多个页块的索引表的查阅减少外存访问次数。
【例】表10.4的索引表占用了三个页块的外存,每个页块能容纳三个索引项,则可为之建立一个查找表,在查找表中,列出索引表的
每一页块最后一个索引项中的关键字(该块中最大的关键字)及该块的地址,如表10.5所示。检索记录时,先查找查找表,再查索引表
,然后读取记录,三次访问外存即可。
2.多级索引
当查找表中项目仍很多,可建立更高一级的索引。通常最高可达四级索引:
数据文件一索引表一查找表一第二查找表一第三查找表。
【例】检索过程从最高一级索引--第三查找表开始,需要5次访问外存。
注意:
① 多级索引是一种静态索引
② 多级索引的各级索引均为顺序表,结构简单,修改很不方便,每次修改都要重组索引。
3. 动态索引
当数据文件在使用过程中记录变动较多时,利用二叉排序树(或AVL树)、B_树(或其变型)等树表结构建立的索引,为动态索引。
(1)树表特点
① 插入、删除方便
② 本身是层次结构,无须建立多级索引
③ 建立索引表的过程即为排序过程。
(2)树表结构选择
① 当数据文件的记录数不很多,内存容量足以容纳整个索引表时,可采用二叉排序树(或AVL树)作索引;
② 当文件很大时,索引表(树表)本身也在外存,查找索引时访问外存的次数恰为查找路径上的结点数。采用m阶B-树(或其变
型)作为索引表为宜(m的选择取决于索引项的多少和缓冲区的大小)。
(3) 外存的索引表的查找性能评价
由于访问外存的时间比内存中查找的时间大得多,所以外存的索引表的查找性能主要着眼于访问外存的次数,即索引表的深度。