SQL查询探秘.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
SQL查询探秘概要

关系代数的七个扩充操作 半连接(semijoin): R S=ΠR (R S) ? S R= ΠS (S R) R S S R A B C a b c d b c b b f c a d B C D b c d b c e a d b R S A B C a b c d b c c a d B C D b c d b c e a d b 关系代数的七个扩充操作 聚集操作 :max、min、avg、sum、count 例:求男同学的平均年龄 avgage(σSEX=‘M’(s)) 求年龄为18岁的人数 counts#(σAGE=‘18’(s)) 关系代数表达式的优化 关系代数表达式中若干关系的操作步骤应该以什么样的操作顺序,才能做到既省时间,又省空间,而且效率也比较高呢?这个问题称为查询优化问题。 在关系代数运算中,笛卡儿积和连接运算是最费时间的。为此,引出三条启发式规则,用于对表达式进行转换,以减少中间关系的大小。 尽可能早地执行选择操作; 尽可能早地执行投影操作; 避免直接做笛卡儿积,把笛卡儿积操作之前和之后的一连串选择和投影合并起来一起做。 关系代数表达式的优化 代数优化: 指关系代数表达式的优化。各种关系查询语言都可以等价地转换为关系代数表达式,因此关系代数表达式的优化是查询优化的基本课题。 代数优化策略:通过对关系代数表达式的等价变换来提高查询效率。 要解决两个问题: 如何构造查询树(语法分析树)? 如何进行代数优化?依据(规则)是什么? 优化的一般原则 选择运算应尽可能先做 在优化策略中这是最重要、最基本的一条。 将投影运算和选择运算同时进行 如有若干投影和选择运算,并且它们都对同一个关系操作,则可以在扫描此关系的同时完成所有的这些运算以避免重复扫描关系。 关系代数表达式等价变换 1)投影的串接 2)选择的串接 3)选择与投影的交换 4)选择与笛卡尔积的交换 关系代数表达式等价变换 5)选择与并的交换 6)选择与差的交换 9)投影与笛卡尔积的交换 7)投影与并的交换 优化步骤 1.构造查询树 第一步:把用高级语言定义的查询转换为关系代数表达式。 以SELECT子句对应投影操作,以FROM字句对应笛卡尔积,以WHERE子句对应选择操作,生成原始查询树。 SQL语句转化为原始查询树 优化步骤 第二步:把关系代数表达式转换为查询树。 查询树是一种表示关系代数表达式的树形结构。在一个查询树中,叶子结点表示关系,内结点表示关系代数操作。查询树以自底向上的方式执行:当一个内结点的操作分量可用时,这个内结点所表示的操作启动执行,执行结束后用结果关系代替这个内结点。 [例] 给定一个用SQL语言定义的查询: SELECT A FROM R1,R2,R3 WHERE P=15 AND N=“User” ΠA(σP=15 AND N=‘User’(R1×R2×R3)) 优化步骤 2、利用等价转换规则反复地对查询表达式进行尝试性转换,将原始的语法树转换成“优化”的形式 利用等价变换规则把形如σF1∧F2∧…∧Fn(E)变换为 σF1(σF2(…(σFn(E))…))。目的是使选择操作可以灵活方便地沿查询树下移; 对每一个选择,利用等价变换规则尽可能把它移到树的叶端。目的是使选择操作尽早执行; 对每一个投影利用等价变换规则等的一般形式尽可能把它移向树的叶端。目的是使投影操作尽早执行; 对每个叶节点加必要的投影操作,以消除对查询无用的属性; 如果笛卡尔乘积后还须按连接条件进行选择操作可将两者组合成连接操作。 优化步骤 把上述得到的“优化”后的语法树的内节点分组。 每一双目运算(×,∞,∪,-)和它所有的直接祖先为一组(这些直接祖先是σ,Π运算)。 如果其后代直到叶子全是单目运算,则也将它们并入该组。 生成一个查询代码,每组结点的计算是程序中的一步(即每一步计算一个子树)。各步的顺序是任意的,只要保证任何一组的计算不会在它的后代组之前计算。 关系代数表达式的优化 例: 设关系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 B=C σD=99(S))

文档评论(0)

6663144 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档