关系代数表达式中的查询优化
被考次数: 1次
被考频率: 低频率
答错率:    49%
知识难度:
考试要求: 掌握     
知识路径:  > 数据库技术  > 关系数据库  > 关系运算  > 查询优化


本知识点历年真题试卷分布
>> 试题列表    
 

 
       关系系统的查询优化是关系数据库管理系统实现的关键技术,又是关系系统的优点。因为,用户只要提出“干什么”,不必指出“怎么干”。在关系代数表达式中需要指出若干关系的操作步骤,问题是怎样做才能保证省时、省空间、效率高,这就是查询优化的问题。
       需要注意的是,在关系代数运算中,笛卡儿积、连接运算最费时间和空间,究竟应采用什么样的策略,节省时间空间。这就是优化的准则。
       优化的准则
       优化的准则有如下6条:
       (1)提早执行选取运算。对于有选择运算的表达式,应优化成尽可能先执行选择运算的等价表达式,以得到较小的中间结果,减少运算量和从外存读块的次数。
       (2)合并乘积与其后的选择运算为连接运算。在表达式中,当乘积运算后面是选择运算时,应该合并为连接运算,使选择与乘积一道完成,以避免做完乘积后,需再扫描一个大的乘积关系进行选择运算。
       (3)将投影运算与其后的其他运算同时进行,以避免重复扫描关系。
       (4)将投影运算和其前后的二目运算结合起来,使得没有必要为去掉某些字段再扫描一遍关系。
       (5)在执行连接前对关系适当地预处理,就能快速地找到要连接的元组。方法有两种:索引连接法、排序合并连接法。
       (6)存储公共子表达式。对于有公共子表达式的结果应存于外存(中间结果),这样,当从外存读出它的时间比计算的时间少时,就可节约操作时间。
       关系代数表达式的等价变换规则
       优化的策略均涉及关系代数表达式,所以讨论关系代数表达式的等价变换规则显得十分重要。常用的等价变换规则有如下10种。
          连接、笛卡儿积交换率
          设E1E2是关系代数表达式,F是连接运算的条件,则有:
          
          连接、笛卡儿积结合率
          设E1E2E3是关系代数表达式,F1、F2是连接运算的条件,则有:
          
          投影的串接定律
          设E是关系代数表达式,A1,…,AnB1,…,Bm是属性名,且B1,…,BmA1,…,An的子集。则有:
          
          该规则的目的是使一些投影消失。
          选择的串接定律
          设E是关系代数表达式,F1、F2是选取条件表达式,选择的串接定律说明选择条件可以合并,则有:
          
          选择与投影的交换律
          设E是关系代数表达式,F是选取条件表达式,并且只涉及A1,…,An属性,则有:
          
          若F中有不属于A1,…,An属性,B1,…,Bm,那么有更一般的规则:
          
          该规则可将投影分裂为两个,使得其中的一个可能被移到树的叶端。
          选择与笛卡儿积的交换律
          若F涉及的都是E1中的属性,则:
          σFE1×E2)≡σFE1)×E2
          如果F=F1F2,并且,F1只涉及E1中的属性,F2只涉及E2中的属性,则有:
          
          选择与并的交换律
          设E=E1∪E2E1E2有相同的属性,则:
          σF(E1∪E2σF(E1)∪σF(E2
          选择与差的交换律
          设E1E2有相同的属性,则:
          σF(E1-E2)≡σF(E1)-σF(E2
          投影与笛卡儿积的交换律
          设E1E2是两个关系表达式,A1,…,AnE1中的属性,B1,…,BmE2中的属性,则:
          
          投影与并的交换律
          设E1E2有相同的属性,则:
          
       查询优化的算法
       利用上述的等价变换规则可以对关系代数表达式进行优化,使得优化后的关系代数表达式符合上述的6条基本优化的准则。
       算法:关系代数表达式的优化。
       输入:一个关系代数表达式的语法树。
       输出:计算该表达式的程序。
       方法:
       (1)利用规则4将形如变换为:
       
       (2)对每一个选择,利用规则4~8尽可能将它移到树的叶端。
       (3)对每一个投影,利用规则3、9、10,5中的一般形式尽可能将它移到树的叶端。
       (4)利用规则3~5将选择和投影的串接合并成单个选择、单个投影或一个选择后跟一个投影。使多个选择或投影能同时进行,或在一次扫描中全部完成。
       (5)将上述得到的语法树的内节点分组。每一双目运算(×,∪,,-)和它所有的直接祖先为一组(这些直接祖先是σπ运算)。如果其后代直到叶子全部是单目运算,则将它并入该组。
       (6)生成一个程序,每组节点的计算是程序中的一步。各步的顺序是任意的,只要保证任何一组的计算不会在它的后代组之前计算。
 

更多复习资料
请登录电脑版软考在线 www.rkpass.cn

京B2-20210865 | 京ICP备2020040059号-5
京公网安备 11010502032051号 | 营业执照
 Copyright ©2000-2025 All Rights Reserved
软考在线版权所有