查询优化
本章节亦属于重难点。
查询处理是指从数据库中提取数据的一系列活动。
即将高级数据库语言表示的查询语句翻译成为能在文件系统这一物理层次上实现的表达方式。
一个查询往往会有许多实现方式,查询优化一方面是在关系代数级优化,要做的就是力图找出与给定表达式等价,但执行效率更高的一个表达式,另一方面涉及查询语句处理的详细策略的选择。
优化的准则
在关系代数运算中,笛卡尔积、连接运算是最费时间和空间。
优化的准则有6条:
- 提早执行选取运算,这样可以得到较小的中间结果,减少运算量和从外存读块的次数。
- 合并乘积与其后的选择运算为连接运算。
- 将投影运算与其后的其他运算同时进行,以避免重复扫描关系。
- 将投影运算和其前后的二目运算结合起来,使得没有必要为去掉某些字段再扫描一遍关系。
- 在执行连接前对关系进行适当的预处理,包括索引连接法、排序合并连接法。
- 存储公共子表达式
关系代数表达式的等价变换规则
P276页-P278页。
⭐ 注意例7.13题。
共有10种等价变换规则。
- 连接、笛卡尔积交换律。
- 连接、笛卡尔积结合律。
- 投影的串接定律
对一个表做多次投影,以最终的投影条件为准。
- 选择的串接定律
选择条件可以合并。
- 选择和投影的交换率
- 选择与笛卡尔积的交换律
- 选择与并的交换律
- 选择与差的交换律
- 投影与笛卡尔积的交换律
- 投影与并的交换律