第6章-查询处理和优化word版本_第1页
第6章-查询处理和优化word版本_第2页
第6章-查询处理和优化word版本_第3页
第6章-查询处理和优化word版本_第4页
第6章-查询处理和优化word版本_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第第6章章-查询处理和优化查询处理和优化数据库查询语言的处理过程数据库查询语言的处理过程: :(1)解释方式执行)解释方式执行应用程序应用程序优化占执优化占执行时间!行时间!(2)(2)编译方式编译方式优化不优化不占执行时占执行时间!间!对于常见的例行事务,编译方式可提高性能。对于常见的例行事务,编译方式可提高性能。对于简短的即时查询,解释方式灵活实用。对于简短的即时查询,解释方式灵活实用。解释方式和编译方式各适用于什么情况?解释方式和编译方式各适用于什么情况?6.2 6.2 代数优化代数优化 代数优化对查询进行等效变换,以减少执行开销。代数优化对查询进行等效变换,以减少执行开销。 代数优化的

2、原则是代数优化的原则是尽量减小查询过程中间结果的尽量减小查询过程中间结果的大小大小。 选择、投影操作通常能够有效地减小关系的大小。选择、投影操作通常能够有效地减小关系的大小。连接、迪卡尔乘积和并操作容易生成较大的查询中连接、迪卡尔乘积和并操作容易生成较大的查询中间结果。间结果。 因此,因此,先做选择、投影先做选择、投影;先做小关系间的连接,先做小关系间的连接,再做大关系的连接再做大关系的连接;甚至需要先找出查询中的公共表甚至需要先找出查询中的公共表达式达式,以避免重复运算。,以避免重复运算。常用变换规则常用变换规则).)(.()(21 .2 1RRcncccnANDcANDc1.)()(122

3、1RRcccc2.nlistlistlistlistlistlistlistRRn.),().)(.(211213.,.,2, 1)() )()(,.,2, 1,.,2, 1AnAACAttrRRAnAAccAnAA4.5.R JN S = S JN RR JN S = S JN RAttr(R)Attr(c)S JN (R)(S) JN (,ccR6.)()2(),() 1(),()() (212 1SAttrcAttrRAttrcAttrSJNRSJNRcccANDc7.LcAttrSJNRSJNRSAttrBBRAttrBBBmBcAnAcLmnmn)()()() ()(,.,),(A,

4、.,A,.,A,.,AL,.,1,.,11111式中则其中,属性集8.)( )() (,SRSRccc则9.)( )() (,SRSRLLL则10.) (S ) (,TRTSRJN则11.范例范例p118p118例例6-16-1 设有设有S(S(供应商供应商) ),P(P(零件零件) ),SP(SP(供应关系供应关系) )三个关系,关系模三个关系,关系模式如下:式如下: S(SNUM,SNAME,CITY) S(SNUM,SNAME,CITY) P(PNUM,PNAME,WEIGHT,SIZE) P(PNUM,PNAME,WEIGHT,SIZE) SP(SNUM,PNUM,DEPT,QUAN)

5、 SP(SNUM,PNUM,DEPT,QUAN)有如下查询有如下查询Q : Q : SELECTSELECT SNAME SNAME FROMFROM S,P,SP S,P,SP WHEREWHERE S.SNUM = SP.SNUM S.SNUM = SP.SNUM AND SP.PNUM = P.PNUM AND SP.PNUM = P.PNUM AND S.CITY = AND S.CITY = NANJINGNANJING AND P.PNAME = AND P.PNAME = BOLTBOLT AND SP.QUAN 10000 AND SP.QUAN 10000 nSQLSQL语句

6、转化为原始查询树语句转化为原始查询树 Select Select From From Where Where Q : SELECT SNAME FROM S,P,SP WHERE S.SNUM = SP.SNUM AND SP.PNUM = P.PNUM AND S.CITY = NANJING AND P.PNAME = BOLT AND SP.QUAN 10000 CSpSPSNAME原始查询树原始查询树SNAMECSpSPPNUMPPNUMSP.SNUMSPSNUMS.NANJINGCITYS10000.QUANSP.BOLTPNAMEPSNAMESSPp选择操作尽量下压选择操作尽量下压

7、.NANJINGCITYSSNUMSPSNUMS.10000.QUANSP.BOLTPNAMEPPNUMPPNUMSP.原始查询树原始查询树先连接小关系先连接小关系 S,P,SP S,P,SP经选择后得经选择后得S S、P P、SPSP,估算大小:估算大小: |S|=|S|/NCITY |P|=|P|/NPNAME |SP|=|SP|(Vmax-10000)/(Vmax-Vmin) 设设| |S S|P|P|, |SP|, |SP|P|,S(j)B then jj+1 else if R(i)AS(j)B then ii+1 else /* R(i)A=S(j)B,输出连接元组输出连接元组*/

8、 输出输出至至T;/*输出输出R(i)和和S中除中除S(j)外外的其他元组所组成的连接元组的其他元组所组成的连接元组 */lj+1;While(l m) and (R(i)A=S(l)B) do输出输出至至T; ll+1;/*输出输出S(j)和和R中除中除R(i)外外的其他元组所组成的连接元组的其他元组所组成的连接元组 */ki+1;While(k n) and (R(k)A=S(j)B) do输出输出至至T; kk+1;ii+1,jj+1; 问题:等值匹配对使用排序问题:等值匹配对使用排序归并法进行连接操作的效率归并法进行连接操作的效率有什么影响?有什么影响? p个个 q个个 R.A 2 2

9、S.B 2 2 2 2 2 2 2 2 2 2 2 2 2 2 . . . . . . 注意等值的扫描次数(假设注意等值的扫描次数(假设p q):): 1+( 1+(q-1)+(p-1)+1+(q-2)+(p-2)+q-1)+(p-1)+1+(q-2)+(p-2)+ +1+( +1+(q-p)+(p-p)q-p)+(p-p)=(p+q-1)+(p+q-2q+1)/2=(p+q-1)+(p+q-2q+1)/2* *p p=p=p* *q q O(pq)O(pq)4).4).散列连接法散列连接法 关键在于建立一个供连接用的散列文件。关键在于建立一个供连接用的散列文件。 可以在桶(散列文件)中不填入

10、可以在桶(散列文件)中不填入R R、S S的实际元组,的实际元组,而是代之以元组的而是代之以元组的tidtid,从而大大的缩小散列文件,从而大大的缩小散列文件,使其有可能在内存中建立,而仅需对使其有可能在内存中建立,而仅需对R R、S S各扫描一次。各扫描一次。 建立散列文件需要对建立散列文件需要对R R、S S各扫描一次,且关系各扫描一次,且关系R R和和S S一般不会对连接属性进行簇集。故而,每向散列文一般不会对连接属性进行簇集。故而,每向散列文件加入一个元组,都需要一次件加入一个元组,都需要一次I/OI/O操作。操作。如何减少如何减少I/OI/O次数次数? ? 扫描扫描R R和和S S时

11、,取出时,取出 A A(R)(R)、 B B(S)(S),附在相应的附在相应的tidtid后,连接时以桶为单位,按后,连接时以桶为单位,按 A A(R)=(R)= B B(S)(S)找出匹配元组找出匹配元组的的tidtid对。对。 问题:问题:似乎多此一举!匹配元组的似乎多此一举!匹配元组的tidtid一定在同一一定在同一桶中!为什么还要按桶中!为什么还要按 A A(R)=(R)= B B(S)(S)找出匹配元组?这找出匹配元组?这么做有必要么?么做有必要么? 注意:注意:A=B A=B h(A)=h(B) h(A)=h(B),但不一定有:但不一定有: h(A)=h(B) h(A)=h(B)

12、A=B A=B 在取实际元组时,为减少物理块访问,可将各在取实际元组时,为减少物理块访问,可将各桶中,匹配元组的桶中,匹配元组的tidtid按块分类,一次集中取出同按块分类,一次集中取出同一块中所需的所有元组,当然这需要较大的内存一块中所需的所有元组,当然这需要较大的内存开销。开销。用排序法消除重复元组用排序法消除重复元组 对关系对关系R R的每个元组的每个元组t t,生成生成tt,并,并存于存于T T中;中;/ /* * T T 是未消除重复元组的投影结果是未消除重复元组的投影结果* */ /If If 含有含有R R的主键的主键 then Tthen TT T elseT elseT按所有

13、属性排序;按所有属性排序; i i1,j1,j2;2; while(i while(i n)n) do do输出元组输出元组T T(i)(i)到到T;T; while Twhile T(i)= T(i)= T(j) do j(j) do jj+1;j+1;/ /* *消除重复元组,设有伪元组消除重复元组,设有伪元组T Tn+1n+1 T Tnn* */ /i ij,jj,ji+1;i+1; 常用集合操作:笛卡尔乘积、并、交、差等。常用集合操作:笛卡尔乘积、并、交、差等。 设关系设关系R、S并兼容,对并兼容,对R、S进行并(交、差)操作,进行并(交、差)操作,可以先将可以先将R和和S按同一属性(

14、通常选用主键)排序,然后按同一属性(通常选用主键)排序,然后扫描两个关系,选出所需的元组。扫描两个关系,选出所需的元组。 笛卡尔乘积将两个关系的元组无条件地互相拼接,笛卡尔乘积将两个关系的元组无条件地互相拼接,一一般用嵌套循环法实现,做起来很费时,结果要比参与运般用嵌套循环法实现,做起来很费时,结果要比参与运算的关系大的多。应尽量少用!算的关系大的多。应尽量少用! 散列是上述并交差操作的另一种求解方法散列是上述并交差操作的另一种求解方法: 将关系将关系R散列到一个散列文件中,再将散列到一个散列文件中,再将S散列到同一文散列到同一文件中。同时检查桶中有无重复元组。对于并,不再插入件中。同时检查桶

15、中有无重复元组。对于并,不再插入重复元组;对于交,选取重复元组;对于差,从桶中取重复元组;对于交,选取重复元组;对于差,从桶中取消与消与S重复的元组。重复的元组。 有时,多个操作组合起来同时进行,如投影和选择操有时,多个操作组合起来同时进行,如投影和选择操作组合起来执行(消除重复元组另外单独进行),可提作组合起来执行(消除重复元组另外单独进行),可提高效益。高效益。 还可以在更大范围内,将多个操作组合起来执行。还可以在更大范围内,将多个操作组合起来执行。RS1212 假设连接用嵌套循环法,假设连接用嵌套循环法,R为外关系,为外关系,S为内关系,为内关系,R的选择、投影可在扫描的选择、投影可在扫描R时执行,时执行,S的选择、投影可的选择、投影可在首次扫描在首次扫描S时执行,并将选择、投影的结果存入临时执行,并将选择、投影的结果存入临时文件,之后各轮只需扫描临时文件即可。时文件,之后各轮只需扫描临时文件即可。 最后一个投影操作,可在生成连接结果的同时进最后一个投影操作,可在生成连接结果的同时进行。行。 在执行前进行优化称为在执行前进行优化称为静态优化静态优化,只能利用统计,只能利用统计数据,有时不一定准。数据,有时不一定准。 在查询执行时进行优化称为在查询执行时进行优化称为动态优化动态优化,用实际执,用实际执行结果估算代价,比较

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论