第九章 关系查询处理与优化

索引

什么时索引组织表 索引的组织方式属于_数据库

索引文件是一种辅助存储结构,其存在与否不改变存储表的物理存储结 构;然而其存在,可以明显提高存储表的访问速度。

索引文件组织方式有两种:(相对照的,主文件组织有堆文件、排序文件、散列文件、 聚簇文件等多种方式)

  • 排序索引文件(Orderedindices):按索引字段值的某一种顺序组织存储
  • 散列索引文件(Hash  indices):依据索引字段值使用散列函数分配散列桶的 方式存储

特点

  • 在一个表上可以针对不同的属性或属性组合建立不同的索引文件,可建立 多个索引文件。索引字段的值可以是Table中的任何一个属性的值或任何多个 属性值的组合值
  • 索引文件比主文件小很多。通过检索一个小的索引文件(可全部装载进内 存),快速定位后,再有针对性的读取非常大的主文件中的有关记录
  • 有索引时,更新操作必须同步更新索引文件和主文件。

DBMS可以自动维护,table改变,索引也会有相应的改变

  • 索引技术应用使检索效率大幅度提高,但同时其也增加了存储空间、使维 护负担加重(不仅要维护主文件,而且要维护索引文件)
    衡量索引性能好坏
  • 访问时间
  • 插入时间
  • 删除时间
  • 空间负载
  • 支持存取的有效性
  • 比如:支持的是属性的限定值(是否符合单一值), 还是支持属性的限定范围的值(是否符合一定范围)

相关概念

什么时索引组织表 索引的组织方式属于_主文件_02

创建索引

什么时索引组织表 索引的组织方式属于_哈希算法_03

什么时索引组织表 索引的组织方式属于_哈希算法_04

  • 对于主文件中每一个记录(形成的每一个索引字段值),都有一个索引项和它 对应,指明该记录所在位置。这样的索引称稠密索引(denseindex)
  • 候选键属性的稠密索引
  • 先查索引,然后再依据索引读主文件
  • 候选键属性的稠密索引(三种情况)

什么时索引组织表 索引的组织方式属于_数据库_05

  • 对于主文件中部分记录(形成的索引字段值),有索引项和它对应,这样的索 引称非稠密索引(undense index)或稀疏索引(sparseindex)
  • 稀疏索引如何定位记录
  • 定位索引字段值为 K的记录,需要
  • 首先找相邻的小于K的最大索引字段值所对应的索引项
  • 从该索引项所对应的记录开始顺序进行Table的检索
  • 稀疏索引的使用要求—主文件必须是按对应索引字段属性排序存储
  • 相比稠密索引:空间占用更少,维护任务更轻,但速度更慢
  • 平衡:索引项不指向记录指针,而是指向记录所在存储块的指针,即每一 存储块有一个索引项,而不是每条记录有一索引项----主索引

比较

  • 一个主文件仅可以有一个主索引,但可以有多个辅助索引
  • 主索引通常建立于主码/排序码上面;辅助索引建立于其他属性上面
  • 可以利用主索引重新组织主文件数据,但辅助索引不能改变主文件数据
  • 主索引是稀疏索引,辅助索引是稠密索引

聚簇索引与非聚簇索引

  • 聚簇索引—是指索引中邻近的记录在主文件中也是临近存储的;
  • 非聚簇索引—是指索引中邻近的记录在主文件中不一定是邻近存储的

特点

  • 如果主文件的某一排序字段不是主码,则该字段上每个记录取值便不唯 一,此时该字段被称为聚簇字段;聚簇索引通常是定义在聚簇字段上。
  • 聚簇索引通常是对聚簇字段上的每一个不同值有一个索引项(索引项的总数和 主文件中聚簇字段上不同值的数目相同),索引字段即是聚簇字段的不同值,由于有相同聚簇字 段值的记录可能存储于若干块中,则索引项的指针指向其中的第一个块。
  • 一个主文件只能有一个聚簇索引文件,但可以有多个非聚簇索引文件 主索引通常是聚簇索引(但其索引项总数不一定和主文件中聚簇字段上不同值的数目相 同,其和主文件存储块数目相同);辅助索引通常是非聚簇索引。
  • 主索引/聚簇索引是能够决定记录存储位置的索引;而非聚簇索引则只能用 于查询,指出已存储记录的位置

其他索引类型

  • 倒排索引

什么时索引组织表 索引的组织方式属于_什么时索引组织表_06


什么时索引组织表 索引的组织方式属于_数据库_07

数据库查询实现算法

一趟扫描算法

数据库查询优化技术

思路

什么时索引组织表 索引的组织方式属于_哈希算法_08


什么时索引组织表 索引的组织方式属于_什么时索引组织表_09

什么时索引组织表 索引的组织方式属于_数据结构_10

  • (1)尽可能地早做选择和投影:可使中间 结果变小,节省几个数量级的执行时间。
  • (2)把选择与投影串接起来:一元运算序 列可一起执行,只需对整个关系扫描一遍。
  • (3)把投影与其前或后的二元运算结合 起来:在第一次用关系时去掉一些无关属性, 可以避免多次扫描整个关系。
  • (4)把某些选择与其前的笛卡尔积合并 成一个连接:当R×S前有选择运算且其中有 条件是R、S属性间比较的运算时,可将其转化 为连接运算可节省时间。
  • (5)执行连接运算前对关系做适当预处 理:文件排序、建立临时索引等,可使两关系 公共值高效联接。
  • (6)找出表达式里的公共子表达式:若 公共子表达式结果不大,则预先计算,以后可读 入此结果,节时多,尤当视图情况下有用。

关系代数操作交换的等价性

关系代数: 并,差,积,选择,投影

等价

什么时索引组织表 索引的组织方式属于_数据库_11

关系交换定理
  1. 连接与连接,积与积的交换律

通常,我们选择结果集合小的表达式,先装入内存

  1. 连接与连接、积和积的结合律

什么时索引组织表 索引的组织方式属于_数据结构_12

通常,我们选择结果集合小的表达式,先装入内存

  1. 投影串接律

什么时索引组织表 索引的组织方式属于_数据库_13

  1. 选择串接律

什么时索引组织表 索引的组织方式属于_哈希算法_14

  1. 选择和投影交换律

什么时索引组织表 索引的组织方式属于_主文件_15

  1. 选择和积的交换律
  2. 什么时索引组织表 索引的组织方式属于_哈希算法_16

  3. 投影和积的交换律

什么时索引组织表 索引的组织方式属于_什么时索引组织表_17

  1. 选择和并的交换律

什么时索引组织表 索引的组织方式属于_主文件_18

  1. 选择和差的交换律

什么时索引组织表 索引的组织方式属于_主文件_19

  1. 投影和并的交换律

什么时索引组织表 索引的组织方式属于_主文件_20

查询优化算法及示例

什么时索引组织表 索引的组织方式属于_什么时索引组织表_21

物理层优化

代价估算