文章目录
- 1.索引的概念
- 2.索引的特点
- 3.关于索引应用的评价问题
- 4.索引相关的概念
1.索引的概念
书籍、词典/字典中的词汇表(索引表)
- 词汇表等包含两部分: 词条, 词条在文件中的页码
- 词汇表等通常按词条进行某种方式的排序
- 目的是通过对“有序的小数据量的词汇表”的快速查找,发现词条在“大数据量书籍中”出现的位置
索引是定义在存储表(Table)基础之上,有助于无需检查所有记录而快速定位所需记录的一种辅助存储结构,由一系列存储在磁盘上的索引项(index entries)组成,每一索引项又由两部分构成:
- 索引字段: 由Table中某些列(通常是一列)中的值串接而成。
索引中通常存储了索引字段的每一个值(也有不是这样的)。
索引字段类似于词典中的词条。 - 行指针: 指向Table中包含索引字段值的记录在磁盘上的存储位置。
行指针类似于词条在书籍、词典中出现的页码。
存储索引项的文件为索引文件,相对应,存储表又称为主文件
2.索引的特点
索引文件是一种辅助存储结构,其存在与否不改变存储表的物理存储结构; 然而其存在,可以明显提高存储表的访问速度。
索引文件组织方式有两种: (相对照的,主文件组织有堆文件、排序文件、散列文件、聚簇文件等多种方式)
- 排序索引文件(Orderedindices):按索引字段值的某一种顺序组织存储
- 散列索引文件(Hashindices):依据索引字段值使用散列函数分配散列桶的方式存储
在一个表上可以针对不同的属性或属性组合建立不同的索引文件,可建立多个索引文件。
索引字段的值可以是Table中的任何一个属性的值或任何多个属性值的组合值。
- 索引文件比主文件 小很多。(索引文件是几个列的组合值,而主文件有多个列) 通过检索一个小的索引文件(可全部装载进内存),快速定位后,再有针对性的读取非常大的主文件中的有关记录(将主文件的表记录从磁盘加载到内存)
- 有索引时,更新操作必须同步更新索引文件和主文件。
3.关于索引应用的评价问题
索引技术应用使检索效率大幅度提高,但同时其也增加了存储空间、使维护负担加重(不仅要维护主文件,而且要维护索引文件)
衡量索引性能好坏:
- 访问时间
- 插入时间
- 删除时间
- 空间负载
- 支持存取的有效性,比如:支持的是属性的限定值(是否符合单一值),还是支持属性的限定范围的值(是否符合一定范围)
- 对哪些属性建立索引?SELECT…FROM…WHERE…GROUP BY…
对经常出现在检索条件、连接条件、分组计算条件中的属性可建立索引
4.索引相关的概念
字段、排序字段、索引字段
- 在索引文件中,每个索引项都有一个索引字段
- 在主文件中,按照哪个属性进行排序,称之为排序字段
码(Key)、主码(Primary Key), 又称为表键(Table Key)—具有唯一性和最小性
- 排序码(OrderKey)—对主文件进行排序存储的那些属性或属性组
- 索引码(IndexKey)—即索引字段,不一定具有唯一性
- 搜索码(SearchKey)—在主文件中查找记录的属性或属性集
(教材中把“索引字段”统称为“索引码(Indexkey)”)请注意区分
主文件 vs.索引文件
- 索引文件是一种辅助存储文件,主文件是DB中所有的数据,索引文件可以没有,但是主文件必须有