关系运算优化

关系运算的安全约束和等价性

在数据库技术中,不产生无限关系和无穷验证的运算称为安全运算,相应的表达式称为安全表达式,所采取的措施称为安全约束。

并、差、笛尔卡积、投影和选择是关系代数最基本的操作,并构成了关系代数运算的最小完备集。已经证明,在这个基础上,关系代数、安全的元组关系演算、安全的域关系演算在关系的表达和操作能力上是完全等价的。

关系代数表达式的优化

在关系代数运算中,笛卡儿积和连接运算是最费时间的。

例 设关系R和S都是二元关系,属性名分别为A,B和C,D。设有一个查询可用关系代数表达式表示:

           E1=πA(σB=C∧D='99'(R×S))

 也可以把选择条件D=‘99’移到笛卡儿积中的关系S前面:

           E2=πA(σB=C(R×σD='99' S))

 还可以把选择条件B=C与笛卡儿积结合成等值连接形式:

           E3=πA((R ⋈ σD='99' S))

  

这三个关系代数表达式是等价的,但执行的效率大不一样。显然,求El,E2,E3的大部分时间是花在连接操作上的。  

关系代数表达式的等价变换规则

 关系运算优化_第1张图片

关系代数表达式的优化算法

在关系代数表达式中,最花费时间和空间的运算是笛卡儿积和连接操作,为此,引出三条启发式规则,用于对表达式进行转换,以减少中间关系的大小。

(1)尽可能早地执行选择操作;

(2)尽可能早地执行投影操作;

(3)避免直接做笛卡儿积,把笛卡儿积操作之前和之后的一连串选择和投影合并起来一起做。 

算法2.1  关系代数表达式的启发式优化算法。

  输入:一个关系代数表达式的语法树

  输出:计算表达式的一个优化序列

你可能感兴趣的:(数据库)