SQL的数据查询优化
2.4.1 关系代数表达式的优化问题
考核要求:达到“领会”
层次知识点:关系代数表达式的优化问题
查询优化的目的就是为了系统在执行时既省时间又能提高效率。
在关系代数运算中,通常是先进行笛卡尔积或联接运算,再进行选择和投影。笛卡尔积或联接运算却往往花费教多的时间。
因此,恰当地安排选择、投影和联接的顺序直接影响到整个操作所需要的时间和空间。 如何安排若干关系的运算操作步骤,是查询优化所要考虑的问题。
2.4.2 关系代数表达式的等价变换规则
考核要求:达到“识记”
层次知识点:等价变换规则
两个关系代数表达式等价是指用同样的关系实例代替两个表达式中相应关系时所得到的结果是完全一样的。
等价变换规则有很多,不要死记,从语义上理解。
其实,只要在前面的学习中已经掌握关系运算的真正含义,就可以判断两个关系代数表达式是否等价。
2.4.3 优化的策略
考核要求:达到“领会”
层次知识点:优化的策略及其简单应用
优化的策略主要有以下几点:
(1)在关系代数表达式中尽可能早地执行选择操作;
(2)把笛卡尔积和随后的选择操作合并成F联接运算;
(3)同时计算一连串的选择和投影操作;
(4)保留同一子表达式的结果;
(5)适当对关系文件进行预处理 ;
(6)计算表达式之前先估计一下怎么计算合算。
以上优化策略要求会简单应用:先做选择,运用投影去除多余属性等等。
2.4.4 关系代数表达式的优化算法
考核要求:达到“简单应用”
层次知识点:语法树
学会画语法树,并掌握优化算法。
举例
在教学数据库S、SC、C中,用户有一查询语句:检索女同学选修课程的课程名和任课教师名。
(1)试写出该查询的关系代数表达式;
(2)试写出查询优化的关系代数表达式;
(3)画出该查询初始的关系代数表达式的语法树;
(4)使用2.4.4节的优化算法,对语法树进行优化,并画出优化后的语法树。