oracle中的增强子查询优化

oracle中的增强子查询优化

ID:37416412

大小:229.00 KB

页数:25页

时间:2019-05-23

oracle中的增强子查询优化_第1页
oracle中的增强子查询优化_第2页
oracle中的增强子查询优化_第3页
oracle中的增强子查询优化_第4页
oracle中的增强子查询优化_第5页
资源描述:

《oracle中的增强子查询优化》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、Oracle中的增强子查询优化这篇文章是我偶然在asktom上看到的,当时有人问子查询合并(subquerycoalescing),TOM给出了这篇文章的链接:http://www.vldb.org/pvldb/2/vldb09-423.pdf我花了大约一周时间翻译,有很多术语找不到相关翻译就只好自己杜撰一个,根据自己的理解对一些难懂的地方做了注释。如果你发现了错误请不吝指正。文中的例子非常值得一读,目前我没有时间去一一验证哪些已由CBO实现,如果你都看懂了对提高自己的SQL技巧是非常有帮助的。插图只上传了前四个,后面的都是一些关于性

2、能的图表,自己看原文即可。Oracle中的增强型子查询优化作者:SrikanthBellamkonda(Srikanth.Bellamkonda@oracle.com)    AngelaAmor(Angela.Amor@oracle.com)    RafiAhmed(Rafi.Ahmed@oracle.com)    MohamedZait(Mohamed.Zait@oracle.com)    AndrewWitkowski(Andrew.Witkowski@oracle.com)    Chun-ChiehLin(Chun-C

3、hieh.Lin@oracle.com)        OracleUSA    500OracleParkway    RedwoodShores,CA,USA(版权归原作者所有,未经许可不得转载)摘要本文描述了ORACLE关系数据库系统中的增强型子查询优化。它讨论了几种技术——子查询合并,利用窗口函数(译者注:即分析函数)的子查询消除,对分组查询的视图消除(viewelimination)。这些技术辨认出查询结构中的冗余成分,并把它们去除,将查询转换为可能更加优化的形式。本文也讨论了新型的并行执行技术,该技术应用广泛,并可用来改善

4、这些经过变换的查询的可扩展性。它还描述了一种反连接(antijoin)的变种,用来优化在有空值的列上带全称量词(译者注:在SQL中指ALL这类量词)的查询。它随后演示了这些优化的结果,表明在执行速度上有着显著的改善。1.介绍当今的关系数据库系统处理各种复杂的SQL查询,包括带有聚合函数,UNION/UNIONALL,DISTINCT,分组(GROUPBY)视图等等的嵌套子查询。这类查询在决策支持系统(DSS)和在线分析处理系统(OLAP)中越来越重要。查询变换是通常推荐的用于优化此类子查询的技术。子查询是SQL的一种强大的组件,大大扩

5、展了它的声明性和表达能力。SQL标准允许子查询被使用在SELECT,FROM,WHERE和HAVING子句中。决策支持系统的基准测试TPC-H[文献14]和TPC-DS[文献15]大量使用了子查询。TPC-H基准测试的22个查询中,差不多有一半用了子查询。大部分是相关子查询,很多都含有聚合函数。所以,高效地执行复杂子查询对数据库至关重要。1.1ORACLE中的查询变换Oracle执行很多种的查询变换——子查询展开(译者注:SubqueryUnnesting,指的是把ANY和EXISTS这类子查询变成连接),分组和DISTINCT视图的

6、合并(译者注:group-byanddistinctviewmerging,指的是在带有GROUPBY/DISTICNT的视图/内联视图中,先和外层的表进行连接,过滤掉一些数据然后再做聚合操作),相同子表达式的消除(译者注:common  sub-expressionelimination,指的是同样的一个表达式出现多次,只需计算一次并多次引用计算结果),连接谓词下推(译者注:joinpredicatepushdown,指的是把外层的连接条件推入里层从而达到预先过滤的目的),连接因式分解(译者注:joinfactorization,指

7、的是把UNION的两个子查询中的公共部分提取出来放到UNION之后做,类似提取公因式),集合操作INTERSECT和MINUS到连接/反连接的转换,OR谓词的扩展(译者注:ORexpansion,指的是把OR或者IN变成一系列UNIONALL),星型转换(译者注:startransformation,用于数据仓库的事实表和维表连接,转换为事实表的位图索引的一系列BITAND运算),分组和DISTINCT的置换(译者注:group-byanddistinct  placement,指的是在有GROUPBY或DISTINCT,同时有WHE

8、RE连接条件,CBO先做分组聚合减少行数再做连接操作,和先前的group-byanddistinctviewmerging恰好相反)。Oracle中的查询变换可能是试探式的或基于成本的。在基于成本的变换中,逻辑变换和物理

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。