- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Oracle 表连接优化
优化SQL的另一种思维5 ORACLE的执行计划之表之间的连接
优化SQL的另一种思维系列文章是作者用了快一年的时间完成的SQL优化文章,它的原理实际上是通过分析SQL语句的执行计划来实现对整体SQL进行优化的,这是多年项目经验的总结,由于考虑到目前国内的Oracle部署还基本维持在Oracle 8 和Oracle 9的水平上,所以里面的模拟环境都是在Oracle 8.3下进行的,希望可以针对性更强一些。本文是系列连载的第五章:ORACLE的执行计划中表之间的连接篇。《优化SQL的另一种思维》目录
一、性能调整综述
二、有效的应用设计
三、SQL语句处理的过程
四、ORACLE的优化器
五、ORACLE的执行计划
背景知识
访问路径(方法) -- access path
表之间的连接
如何产生执行计划
如何分析执行计划
如何干预执行计划 - - 使用hints提示
具体测试实例
具体案例分析
六、其它注意事项
七、整体实例分析
客户端程序优化SQL步骤
tkprof程序整体实例解说
【IT专家网独家】Join是一种试图将两个表结合在一起的谓词,一次只能连接2个表,表连接也可以被称为表关联。在后面的叙述中,我们将会使用”row source”来代替”表”,因为使用row source更严谨一些,并且将参与连接的2个row source分别称为row source1和row source 2。Join过程的各个步骤经常是串行操作,即使相关的row source可以被并行访问,即可以并行的读取做join连接的两个row source的数据,但是在将表中符合限制条件的数据读入到内存形成row source后,join的其它步骤一般是串行的。有多种方法可以将2个表连接起来,当然每种方法都有自己的优缺点,每种连接类型只有在特定的条件下才会发挥出其最大优势。
row source(表)之间的连接顺序对于查询的效率有非常大的影响。通过首先存取特定的表,即将该表作为驱动表,这样可以先应用某些限制条件,从而得到一个较小的row source,使连接的效率较高,这也就是我们常说的要先执行限制条件的原因。一般是在将表读入内存时,应用where子句中对该表的限制条件。
根据2个row source的连接条件的中操作符的不同,可以将连接分为等值连接(如WHERE A.COL3 = B.COL4)、非等值连接(WHERE A.COL3 B.COL4)、外连接(WHERE A.COL3 = B.COL4(+))。上面的各个连接的连接原理都基本一样,所以为了简单期间,下面以等值连接为例进行介绍。在后面的介绍中,都已:
SELECT?A.COL1,?B.COL2 FROM?A,?B WHERE?A.COL3?=?B.COL4; 为例进行说明,假设A表为Row Soruce1,则其对应的连接操作关联列为COL 3;B表为Row Soruce2,则其对应的连接操作关联列为COL 4;
连接类型:
目前为止,无论连接操作符如何,典型的连接类型共有3种:
排序 - - 合并连接(Sort Merge Join (SMJ) )
嵌套循环(Nested Loops (NL) )
哈希连接(Hash Join)
排序 - - 合并连接(Sort Merge Join, SMJ)
内部连接过程:
1) 首先生成row source1需要的数据,然后对这些数据按照连接操作关联列(如A.col3)进行排序。
2) 随后生成row source2需要的数据,然后对这些数据按照与sort source1对应的连接操作关联列(如B.col4)进行排序。
3) 最后两边已排序的行被放在一起执行合并操作,即将2个row source按照连接条件连接起来
下面是连接步骤的图形表示:
???????????????????????? MERGE? ?? ?? ?? ?? ?? ?? ?? ? /? ?? ? \? ?? ?? ?? ?? ?SORT? ?? ? SORT? ?? ?? ?? ?? ?? ?|? ?? ?? ?? ?? ?? ? |? ?? ???Row Source 1? ?? ?? ?Row Source 2 如果row source已经在连接关联列上被排序,则该连接操作就不需要再进行sort操作,这样可以大大提高这种连接操作的连接速度,因为排序是个极其费资源的操作,特别是对于较大的表。 预先排序的row source包括已经被索引的列(如a.col3或b.col4上有索引)
您可能关注的文档
- 四个开源商业智能平台比较.doc
- ttisql控制台命令大全.doc
- 第5章螺纹联接和螺旋机构.ppt
- WAP2.0介绍.doc
- Oracle并行处理.docx
- 谈谈VFP和SQLSERVER搭配做CS系统.doc
- 外研版英语九年级上M7——M8知识点复习.doc
- 第七章-链接分析.ppt
- 常用 select 语句汇总.doc
- Select方法大集合.doc
- 贵州仁怀市交通建设投资开发有限公司招聘笔试题库2024.pdf
- 四川省遂宁市新阳光劳务派遣有限公司招聘笔试题库2024.pdf
- 浙江宁波市甬台众创小镇开发建设公司招聘笔试题库2024.pdf
- 上海松江新城投资建设集团及下属公司招聘笔试题库2024.pdf
- 浙江宁波市余姚市牟山湖开发有限公司招聘笔试题库2024.pdf
- 安徽阜阳颍东区东盛建设投资有限公司招聘笔试题库2024.pdf
- 浙江建德市强盛民用爆破器材有限公司招聘笔试题库2024.pdf
- 公司清明祭扫方案.pptx
- 标准图集-DBJT03-22-2005_05J4-1 常用门窗.pdf
- 浙江宁波新材料测试评价中心有限公司招聘笔试题库2024.pdf
文档评论(0)