基本上克服了变长记录的顺序文件不能随机访问,以及不便于记录的增加或删除。
记录仍然以关键字的顺序组织起来。
引入了文件索引表,通过该表可以实现对索引顺序文件的随机访问。
增加了溢出文件,用它来记录新增加、删除和修改的记录。
一级索引顺序文件
首先将变长记录顺序文件中的所有记录分为若干组,50个记录为一组。然后为顺序文件建立一张索引表,并为每组中的第一个记录在索引表中建立一个索引项。
在对索引顺序文件进行检索时,首先利用用户提供的关键字以及某种查找算法去检索索引表,找到该记录所在记录组中的第一个记录的表项,从中得到该记录组第一个记录在主文件中的位置。再利用顺序查找法去查找主文件,从中找到所要求的记录。
如果一个顺序文件所含记录为N,则为检索到具有指定关键字的记录,平均查找N/2个记录,但对于索引顺序文件,平均查找平方根N个记录。
例如:一个顺序文件有10000个记录,平均须查找的记录数为5000个,但对于索引顺序文件,则平均查找100个记录
两级索引顺序文件
对于一个非常大的文件,为找到一个记录而需要查找的记录数目仍然很多,对于一个10的六次方个记录的索引顺序文件,需要查找1000个记录。
为了进一步提高检索效率,可以为顺序文件建立多级索引。
对于一个含有10的六次方个记录的顺序文件,可以先为该文件建立一张低级索引表,每100个记录为一组,所以低级索引表有10000个表项,在每个表项中存放顺序文件中每个组第一个记录的记录键值和指向该记录的指针,然后为低级索引表建立一张高级索引表。
直接文件和哈希文件
- 直接文件
直接文件,可根据给定的关键字直接获得指定记录的物理地址。
键值转换:根据给定的关键字直接获得指定记录的物理地址 - 哈希文件
- 是最广泛的一种直接文件,利用哈希函数可将关键字转换为相应记录的地址。