查询树的启发式优化

典型的启发式规则:

1.选择运算应尽可能先做。在优化策略中这是最重要、最基本的一条

2.把投影运算和选择运算同时进行

如有若干投影和选择运算,并且它们都对同一个关系操作,则可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系

3.把投影同其前或其后的双目运算结合起来

4.把某些选择同在它前面要执行的笛卡尔积结合起来成为一个连接运算

5.找出公共子表达式

例子:求选修了2号课程的学生姓名。

SELECT  Student.Sname

     FROM StudentSC

     WHERE Student.Sno=SC.Sno AND    SC.Cno=‘2’

 下面给出SQL语句的代数优化示例:

(1) 把SQL语句转换成查询树

     

(2)对应的关系代数语法树:

     

(3)优化:把选择σSC.Cno=‘2’移到叶端

        

   select  Student.Sname
     from Student
     where Student.Sno exists (select SC.Sno from SC where SC.Cno='2'); 

 


Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐