您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据结构与算法 > 关系数据库的查询与优化
2.4查询优化关系系统和关系模型既密切相关,又是不相同的概念。一般支持关系模型的DBMS称之为关系系统,但是一个实际的关系数据库管理系统,不必苛求它完全支持关系模型,所以要讨论关系系统的最小要求和分类。对于一个给定的查询问题会有多种等价的实现办法,能否找出一个与之等价而操作时间又少的表达式,换句话说,究竟哪一种方法是最优的?这就是查询优化要讨论的问题。2.4.1关系代数表达式的优化问题查询处理:是指从数据库中提取数据的一系列活动。这一系列活动包括:将高级数据库语言表示的查询语句翻译成为能在文件系统这一物理层次上实现的表达式,为优化查询进行各种转换,以及查询的实际执行。查询处理的代价:通常取决于磁盘的访问,磁盘的访问比内存访问速度要慢。对于一个给定的查询,可以有许多可能的处理策略,复杂查询更是如此。就所需的磁盘访问次数而言,策略好坏差别很大,有时甚至相差几个数量级。所以,多花一点时间选择一个较好的查询策略是很值得的。查询优化:是为了查询选择最有效的查询计划的过程。查询优化一方面是在关系代数级进行优化,要做的是力图找出与给定表达式等价,但执行效率更高的一个表达式。查询优化的另一方面涉及查询语句处理的详细策略的选择,例如选择执行运算所采用的具体算法,以及将使用的特定索引,等等。一个查询往往会有许多实现办法,关键是如何找出一个与之等价的且操作时间又少的表达式。下面将专门讨论这个问题。2.4.2关系代数表达式的等价变换规则关系系统的查询优化既是关系数据库管理系统实现的关键技术,又是关系系统的优点。第2章关系数据库·43·因为,用户只要提出“干什么”,不必指出“怎么干”。在关系代数表达式中需要指出若干关系的操作步骤,问题是怎样做才能保证省时、省空间、效率高,这就是查询优化的问题。需要注意的是,在关系代数运算中,笛卡儿积、连接运算最费时间和空间,究竟应采用什么样的策略,才能节省时间和空间?这就是优化的准则。1.优化的准则(1)提早执行选取运算。对于有选择运算的表达式,应优化成尽可能先执行选择运算的等价表达式,以得到较小的中间结果,减少运算量和从外存读块的次数。(2)合并乘积与其后的选择运算为连接运算。在表达式中,当乘积运算后面是选择运算时,应该合并为连接运算,使选择与乘积一道完成,以避免做完乘积后,需再扫描一个大的乘积关系进行选择运算。(3)将投影运算与其后的其他运算同时进行,以避免重复扫描关系。(4)将投影运算和其前后的二目运算结合起来,使得没有必要为去掉某些字段再扫描一遍关系。(5)在执行连接前对关系适当地预处理,就能快速地找到要连接的元组。方法有两种:索引连接法、排序合并连接法。(6)存储公共子表达式。对于有公共子表达式的结果应存于外存(中间结果),这样,当从外存读出它的时间比计算的时间少时,就可节约操作时间。2.关系代数表达式的等价变换规则优化的策略均涉及关系代数表达式,所以讨论关系代数表达式的等价变换规则显得十分重要。常用的等价变换规则有如下10种:1)连接、笛卡儿积交换率设E1和E2是关系代数表达式,F是连接运算的条件,则有E1×E2≡E2×E1E1E2≡E2E1FF2)连接、笛卡儿积结合率设E1,E2,E3是关系代数表达式,F1,F2是连接运算的条件,则有(E1×E2)×E3≡E1×(E2×E3)(E1E2)E3≡E1(E2E3)F1F2F1F23)投影的串接定律设E是关系代数表达式,A1,…,An和B1,…,Bm是属性名,且B1,…,Bm是A1,…,An的子集。则有πA1,…,An(πB1,…,Bm(E))≡πA1,…,An(E)该规则的目的是使一些投影消失。4)选择的串接定律设E是关系代数表达式,F1,F2是选取条件表达式,选择的串接定律说明选择条件可以合并,则有σF1(σF2(E))≡σF1∧F2(E)·44·数据库原理及应用5)选择与投影的交换律设E是关系代数表达式,F是选取条件表达式,并且只涉及A1,…,An属性,则有σF(πA1,…,An(E))≡πA1,…,An(σF(E))若F中有不属于A1,…,An属性,B1,…,Bm,那么有更一般的规则:σF(πA1,…,An(E))≡πA1,…,An(σF(πA1,…,AnB1,…,Bm(E)))该规则可将投影分裂为两个,使得其中的一个可能被移到树的叶端。6)选择与笛卡儿积的交换律若F涉及的都是E1中的属性,则σF(E1×E2)≡σF(E1)×E2如果F=F1∧F2,并且,F1只涉及E1中的属性,F2只涉及E2中的属性,则有σF(E1×E2)≡σF1(E1)×σFE227)选择与并的交换律设E=E1∪E2,E1,E2有相同的属性,则σF(E1∪E2)≡σF(E1)∪σF(E2)8)选择与差的交换律设E1,E2有相同的属性,则σF(E1-E2)≡σF(E1)-σFE29)投影与笛卡儿积的交换律设E1,E2是两个关系表达式,A1,…,An是E1中的属性,B1,…,Bm是E2中的属性,则πA1,…,An,B1,K,Bm(E1×E2)≡πA1,…,An(E1)×πB1,K,Bm(E2)10)投影与并的交换律设E1,E2有相同的属性,则πA1,…,An(E1∪E2)≡πA1,…,An(E1)∪πA1,…,Am(E2)2.4.3关系代数表达式的优化算法算法:关系代数表达式的优化。输入:一个关系代数表达式的语法树。输出:计算该表达式的程序。方法:(1)利用规则4将形如σF1∧F2∧…Fn(E)变换为σF1(σF2KσFn(E))…)(2)对每一个选择,利用规则4~8尽可能将它移到树的叶端。(3)对每一个投影,利用规则3,5,9,10中的一般形式尽可能将它移到树的叶端。(4)利用规则3~5将选择和投影的串接合并成单个选择、单个投影或一个选择后跟一个投影。使多个选择或投影能同时进行,或在一次扫描中全部完成。(5)将上述得到的语法树的内节点分组。每一双目运算(×,∪,,-)和它所有的直接祖先为一组(这些直接祖先是σ,π运算)。如果其后代直到叶子全部是单目运算,则将它并入该组。(6)生成一个程序,每组节点的计算是程序中的一步。各步的顺序是任意的,只要保证第2章关系数据库·45·任何一组的计算不会在它的后代组之前计算。【例2.12】供应商数据库中有供应商、零件、项目、供应4个基本表(关系):S(Sno,Sname,Status,City)P(Pno,Pname,Color,Weight)J(Jno,Jname,City)SPJ(Sno,Pno,Jno,Qty)用户有一查询语句:检索使用上海供应商生产的红色零件的工程号。(1)试写出该查询的关系代数表达式。(2)试写出查询优化的关系代数表达式。(3)画出该查询初始的关系代数表达式的语法树。(4)使用优化算法,对语法树进行优化,并画出优化后的语法树。解:(1)该查询的关系代数表达式如下:πJno(σCtiy=SPJP))(2)查询优化的关系代数表达式如下:πJno(πSno(σCtiy=πSno,Pno,Jno(SPJ)(3)画出该查询初始的关系代数表达式的语法树如图2-21所示。(4)使用优化算法,对语法树进行优化,并画出优化后的语法树如图2-22所示。图2-21优化前图2-22优化后2.5关系数据库的规范化理论在关系模型中,一个数据库模式是关系模式的集合。要保证构造的关系既能准确地反应现实世界,又有利于应用和具体的操作。规范化理论研究的是关系模式中各属性之间的依赖关系及其对关系模式性能的影响,提供判断关系模式优劣的理论标准,预测可能出现的问题,提供了自动产生各种模式的算法。因此,它是设计人员的有力工具和理论基础。关系数据库设计理论的核心是数据间的函数依赖,衡量的标准是关系规范化的程度及分解的无损连接和保持函数依赖性。关系数据库设计的目标是生成一组合适的、性能良好的关系模式,以·46·数据库原理及应用减少系统中信息存储的冗余度,但又可方便地获取信息。2.5.1函数依赖数据依赖是通过一个关系中属性间值的相等与否体现出来的数据间的相互关系,是现实世界属性间联系和约束的抽象,是数据内在的性质,是语义的体现。函数依赖则是一种最重要、最基本的数据依赖。1.函数依赖的定义【定义2.4】设R(U)是属性集U上的关系模式,X,Y是U的子集。若对R(U)的任何一个可能的关系r,r中不可能存在两个元组在X上的属性值相等,而在Y上的属性值不等,则称X函数决定Y或Y函数依赖于X,记作:X→Y。注意:函数依赖X→Y的定义要求关系模式R的任何可能的r都满足上述条件。因此不能仅考察关系模式R在某一时刻的关系r,就断定某函数依赖成立。例如,关系模式Student(Sno,Sname,SD,Sage,Sex)可能在某一时刻,Student的关系r中每个学生的年龄都不同,也就是说没有两个元组在Sage属性上取值相同,而在Sno属性上取值不同,但我们决不可据此就断定Sage→Sno。很有可能在某一时刻,Student的关系r中有两个元组在Sage属性上取值相同,而在Sno属性上取值不同。函数依赖是语义范畴的概念,我们只能根据语义来确定函数依赖。例如,在没有同名的情况下,Sname→Sage,而在有同名的情况下,这个函数依赖就不成立了。非平凡的函数依赖:如果X→Y,但YX,则称X→Y是非平凡的函数依赖。一般情况下总是讨论非平凡的函数依赖。平凡的函数依赖:如果X→Y,但YX,则称X→Y是平凡的函数依赖。【定义2.5】在R(U)中,如果X→Y,并且对于X的任何一个真子集X′,都有X′不能f决定Y,则称Y对X完全函数依赖,记做:XY。p如果X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记做:XY。部分函数依赖也称局部函数依赖。【定义2.6】在R(U,F)中,如果X→Y,YX,Y→/X,Y→Z,则称Z对X传递函数依赖。【例2.13】在关系模式SC(Sno,Cno,Grade,Credit)中,f(Sno,Cno)Grade成绩完全函数依赖于学号和课程号Cno→Credit学分函数依赖于课程号p(Sno,Cno)Credit学分部分函数依赖于学号在关系模式Student(Sno,Sname,SD,SDname,Sage,Sex)中,Sno→Sname,Sno→Sage又因为Sno→SD,SD→/Sno,SD→SDname,所以可以得出Sno→SDname,即系名传递依赖于学号。2.码f【定义2.7】设K为R(U,F)中的属性或属性的组合,若KU,且对于K的任何一第2章关系数据库·47·个真子集K若有多个候选码,则选一个作为主码(Primarykey)。候选码通常也称候选关键字。包含在任何一个候选码中的属性叫做主属性(Primeattribute),否则叫做非主属性(Nonprimeattribute)。【例2.14】关系模式CSZ(CITY,ST,ZIP),其属性组上的函数依赖集为F={(CITY,ST)→ZIP,ZIP→CITY}即城市、街道决定邮政编码,邮政编码决定城市。容易看出,(CITY,ST)和(ST,ZIP)是两个候选码。CITY,ST,ZIP都是主属性。【定义2.8】若R(U,F)中的属性或属性组X非R的码,但X是另一个关系的码,则称X是R的外码(Foreignkey)。【定义2.9】若关系模式R(U)中,X,Y,Z是U的子集,并且Z=U-X-Y。当且仅当对R(U)的任何一个关系r,给定一对(X,Z)值,有一组Y的值,这组值仅仅决定于X值而与Z值无关,则称“Y多值依赖于X”或“X多值决定Y”成立。记为X→→Y。多值依赖具有如下6条性质:(1)多值依赖具有对称性。即若X→→Y,则X→→Z,其中Z=U-X-Y。(2)多值依赖的传递性。即若X→→Y,Y→→Z,则X→→Z-Y。(3)函数依赖可以看成是多值依赖的特殊情况。(4)若X→→Y,X→→Z,则X→→YZ。(5)若X→→Y,X→→Z,则X→→YZ。(6)若X→→Y,X→→Z,则X→→Z-Y。3.逻辑蕴涵与Armstrong公理系统【定义2.10】设R(U,F)是一个关系模式,X,Y是U中的属性组,若在R(U,
本文标题:关系数据库的查询与优化
链接地址:https://www.777doc.com/doc-5925795 .html