首页 理论教育数据库优化步骤指南-数据库技术与应用教程

数据库优化步骤指南-数据库技术与应用教程

【摘要】:例如,学生选课实例,语法树表示为如图2-3所示。图2—3语法树图2—4关系代数语法树图2—5优化后的语法树2.把语法树转换成标准(优化)形式利用优化算法,把原始的语法树转换成优化的形式。

1.把查询转换成某种内部表示

通常用的内部表示是语法树。例如,学生选课实例,语法树表示为如图2-3所示。为了使用关系代数表达式的优化法,不妨假设内部表示是关系代数语法树,如图2-4所示。

图2—3 语法树

图2—4 关系代数语法树

图2—5 优化后的语法树

2.把语法树转换成标准(优化)形式

利用优化算法,把原始的语法树转换成优化的形式。各个DBMS优化算法不尽相同,这里利用前面讨论的关系代数表达式的优化算法进行优化。

例如,利用规则(4)和(6),把选择移到叶端,图2-4语法树就转换成图2-5。(www.chuimin.cn)

3.选择低层的存取路径

根据第(2)步得到的优化了的语法树计算关系表达式值的时候,要充分考虑索引、数据的存储分布等存取路径,利用它们进一步改善查询效率。这就要求优化器去查找数据字典,获得当前数据库状态的信息,例如选择字段上是否有索引,连接的两个表是否有序,连接字段上是否有索引等。然后,根据一定的优化规则选择存取路径。在本例中,若在选课表的课程号字段上建有索引,则应该利用该索引,而不必排序扫描选课表。

4.生成查询计划,选择代价最小的查询计划

查询计划是由一组内部过程组成的,这组内部过程可实现按某条存取路径计算关系表达式的值。常有多个查询计划可供选择。例如在做连接运算时,若有两个表R1和R2,均无序,连接属性上也没有索引,则可以有下面的几种查询计划。

①对两个表做排序预处理。

②对R1在连接属性上建索引。

③对R2在连接属性上建索引。

④对R1、R2在连接属性上建索引。

对不同的查询计划计算代价,选择其中代价最小的一个。在计算代价时,主要考虑磁盘读写的Ⅰ/O数,而且内存、CPU的处理时间在粗略计算时可不考虑。