Conventional Index
Dense Index 稠密索引
- 必须为每个原始记录的key值建立索引
- 索引中的每个key值按顺序排列
Sparse Index 稀疏索引
- 为每个数据块只建立一个索引项
- 索引中的每个key值按顺序排列
- 顺序存储的文件没有必要为每个key值都建立索引
- 如果要查找在原始记录中不存在的key值,一定要搜索到底层的文件
Multi-level Index 多级索引
- 为索引再建立索引
Duplicate keys 重复值如何创建索引
- 稠密索引:对每个原始记录都建立key值
- 稀疏索引:取每个数据块最小的数,当选出的key值重复时,跳过这一数据块
插入/删除记录对索引的影响
- 对于稀疏索引,注意索引一定要取每个数据块最小的数
- 插入时,如果使用溢出链,则不用改变索引,溢出链过长时,重新排序并构造索引
Secondary Index 辅助索引
- 在没有排序的key值或除了主索引的key值上建立的索引
- 一级索引必须是稠密索引
- 稀疏索引不能作为辅助索引的一级索引,但可以作为辅助索引的二级索引
指针桶
- 辅助索引的原始记录有重复值时,可以使用指针桶,每个指针指向每一个记录
- 辅助索引的每个key值指向每个指针桶
B+树索引
- B+树的知识详见:数据结构笔记8: 搜索树
- 叶子节点是稠密索引,指针指向目标记录;节点中有一个指针,指向下一个叶子节点
- 非叶子节点是稀疏索引
Hashing 散列
- 散列的知识详见:数据结构笔记5: 散列
- 哈希函数直接指向原始数据
- 哈希函数指向一级索引,一级索引再指向原始数据
- 在50%-80%内最佳