几种索引:
1)排序文件上的简单索引
2)非排序文件上的辅助索引
3)B树
4)散列表
主索引
1)稠密索引:每个主键都有
2)稀疏索引:每个数据块存放一个键
3)多级索引:索引上的索引
4)重复查找键的索引: 比较简单的解决方法是在稠密索引上的每种键值都建立一个索引
数据修改期间的索引维护
1)创建或删除一个空溢出块:对两种索引均无影响,因为稠密索引针对记录,稀疏索引针对基本存储快
2)创建或删除文件的块:对稠密索引无影响,对稀疏索引有影响
3)插入或删除记录:对稠密索引有相同的影响。当不产生额外块的时候对稀疏索引无影响
4)移动一个记录,对稠密索引有影响,当记录的移动改变某个块的第一条的时候对稀疏索引有影响。
辅助索引
主索引决定了被索引记录的位置,而当查询条件不是对主键的判断的时候,可以利用辅助索引来加速。
CREATE INDEX DBindex ON MovieStar(birthdate);
此时
SELECT name,address
FROM MovieStar(birthdate);
WHERE birthdate = DATE'1950-01-01';
这条查询就会变快
辅助索引的设计
辅助索引是稠索引,通常具有重复值,为了便于快速找到给定键值的索引,可是对其构建二级索引。
B树
每个B树的索引都有一个参数n,决定了每个存储块对应n个键值与n+1个指针。
B树中有几个重要的规则
1)根节点中至少有两个指针被使用,所有指针指向B树的下一层
2)叶节点中最后一个指针指向它右边的下一个也