oracle 表连接优化

oracle 表连接优化

ID:12132175

大小:51.00 KB

页数:9页

时间:2018-07-15

oracle 表连接优化_第1页
oracle 表连接优化_第2页
oracle 表连接优化_第3页
oracle 表连接优化_第4页
oracle 表连接优化_第5页
资源描述:

《oracle 表连接优化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、优化SQL的另一种思维5ORACLE的执行计划之表之间的连接优化SQL的另一种思维系列文章是作者用了快一年的时间完成的SQL优化文章,它的原理实际上是通过分析SQL语句的执行计划来实现对整体SQL进行优化的,这是多年项目经验的总结,由于考虑到目前国内的Oracle部署还基本维持在Oracle8和Oracle9的水平上,所以里面的模拟环境都是在Oracle8.3下进行的,希望可以针对性更强一些。本文是系列连载的第五章:ORACLE的执行计划中表之间的连接篇。《优化SQL的另一种思维》目录  一、性能调整综述  二、有效的应用设计  三、SQL语句处理的过程  四

2、、ORACLE的优化器  五、ORACLE的执行计划    背景知识    访问路径(方法)--accesspath    表之间的连接    如何产生执行计划    如何分析执行计划    如何干预执行计划--使用hints提示    具体测试实例    具体案例分析  六、其它注意事项  七、整体实例分析    客户端程序优化SQL步骤    tkprof程序整体实例解说  【IT专家网独家】Join是一种试图将两个表结合在一起的谓词,一次只能连接2个表,表连接也可以被称为表关联。在后面的叙述中,我们将会使用”rowsource”来代替”表”,因为使用ro

3、wsource更严谨一些,并且将参与连接的2个rowsource分别称为rowsource1和rowsource2。Join过程的各个步骤经常是串行操作,即使相关的rowsource可以被并行访问,即可以并行的读取做join连接的两个rowsource的数据,但是在将表中符合限制条件的数据读入到内存形成rowsource后,join的其它步骤一般是串行的。有多种方法可以将2个表连接起来,当然每种方法都有自己的优缺点,每种连接类型只有在特定的条件下才会发挥出其最大优势。  rowsource(表)之间的连接顺序对于查询的效率有非常大的影响。通过首先存取特定的表,

4、即将该表作为驱动表,这样可以先应用某些限制条件,从而得到一个较小的rowsource,使连接的效率较高,这也就是我们常说的要先执行限制条件的原因。一般是在将表读入内存时,应用where子句中对该表的限制条件。  根据2个rowsource的连接条件的中操作符的不同,可以将连接分为等值连接(如WHEREA.COL3=B.COL4)、非等值连接(WHEREA.COL3>B.COL4)、外连接(WHEREA.COL3=B.COL4(+))。上面的各个连接的连接原理都基本一样,所以为了简单期间,下面以等值连接为例进行介绍。在后面的介绍中,都已:  SELECT A.C

5、OL1, B.COL2  FROM A, B  WHERE A.COL3 = B.COL4;  为例进行说明,假设A表为RowSoruce1,则其对应的连接操作关联列为COL3;B表为RowSoruce2,则其对应的连接操作关联列为COL4;  连接类型:  目前为止,无论连接操作符如何,典型的连接类型共有3种:·  排序--合并连接(SortMergeJoin(SMJ))·  嵌套循环(NestedLoops(NL))·  哈希连接(HashJoin)  排序--合并连接(SortMergeJoin,SMJ)  内部连接过程:  1)首先生成rowsourc

6、e1需要的数据,然后对这些数据按照连接操作关联列(如A.col3)进行排序。  2)随后生成rowsource2需要的数据,然后对这些数据按照与sortsource1对应的连接操作关联列(如B.col4)进行排序。  3)最后两边已排序的行被放在一起执行合并操作,即将2个rowsource按照连接条件连接起来  下面是连接步骤的图形表示:                        MERGE                /              SORT    SORT            

7、            

8、      RowSourc

9、e1      RowSource2  如果rowsource已经在连接关联列上被排序,则该连接操作就不需要再进行sort操作,这样可以大大提高这种连接操作的连接速度,因为排序是个极其费资源的操作,特别是对于较大的表。预先排序的rowsource包括已经被索引的列(如a.col3或b.col4上有索引)或rowsource已经在前面的步骤中被排序了。尽管合并两个rowsource的过程是串行的,但是可以并行访问这两个rowsource(如并行读入数据,并行排序).SMJ连接的例子:SQL>explainplanforselect/*+ordered*/e.de

10、ptno,d.deptnofromem

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

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

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