查询树的优化

310 阅读2分钟

本文正在参加「技术专题19期 漫谈数据库技术」活动

数据库中查询树的优化

在数据库的学习中,介于课上学习到查询树的优化问题,在此记录。

等价的概念

若关系表达式f(E1,E2,…,En)的结果与关系表达式g(E1,E2,…,En)的结果是同一个关系,那么称这两个表达式等价。 若关系表达式E1和E2是等价的可以记为: image.png

等价变换规则

连接、笛卡儿积交换率 设E1和E2是关系代数表达式,F是连接运算的条件,则有:

image.png

image.png

连接、笛卡尔积的结合率

 设E1,E2,E3是关系代数表达式,F1和F2是连接运算的条件,则有:

image.png

选择的串接定律

image.png

E是关系代数表达式,F1和F2是选择条件。选择的串接定律说明选择条件可以合并,这样一次就可以检查全部的条件。

优化规则:

  • 选择运算尽可能先做。
  • 投影运算和选择运算同时进行。
  • 把投影运算同其前后的 双目运算结合执行。
  • 选择运算和笛卡儿积运算结合成连接运算。
  • 找出公共子表达式,避免重复运算。

优化算法:

  • 利用规则4分解选择运算。
  • 利用规则4~9把选择运算尽量移到叶端。
  • 利用规则3,5,10,11把投影运算尽量移到叶端。
  • 利用规则3~5把选择和投影的串接合并成单个选择、单个投影或一个选择后跟一个投影的形式。使尽可能多的选择和投影同时执行。
  • 分组。双目运算和他的直系祖先为一组;双目运算后代直道叶子全是单目运算时并入改组。笛卡儿积的后代中若不是与之可以合并的自然连接的等值选择时,其后代单独分为一组。

优化实例

例:对关系代数表达式(如下)进行优化。

image.png

其中,C是课程表,S是学生表,SC是学生选课表。 在优化规则中没有对自然连接的直接优化,我们把自然连接分解为笛卡儿积和选择。

解答: 分解后的关系代数表达式

image.png

  • 第一步:利用规则4分解选择运算

image.png

  • 第二步:尽量下放选择运算

image.png

  • 第二步(2):下放完成后:

image.png

  • 第三步:尽量下放投影运算

image.png

  • 第四步:尽量把选择和投影靠在一起

image.png

  • 第五步:分组

image.png