- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
高效的SQL语句
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 驱动表 Oracle选择一张表作为连接的驱动表,即第一个记录源通常称为外部表(Outer Table),或者驱动表。 内部表 相对于驱动表来说,由驱动表进行驱动连接的表或者数据源被成为 内部表(Inner Table)。 表的连接方式—名词解释 NESTLOOPS: 嵌套循环连接 扫描一张表,每读到一条记录,就根据索引去另一张表里查找。在关联查询的过程中,Oracle会持续提取驱动表中其他符合条件的记录与内部表关联查询。这两个过程是并行进行的,因此嵌套循环连接返回前几条记录的速度是非常快的。 表的连接方式 NESTLOOPS的连接过程: 一个是外部循环,提取驱动表中符合条件的每条记录。另外一个是内部循环,根据外循环中提取的每条记录对内部表进行连接查询相应的记录。由于这两个循环是嵌套进行的,故此种连接方法称为嵌套循环连接 表的连接方式 NESTED LOOPOuter LoopInner Loop NESTLOOPS: 表的连接方式 SQL select /*+use_nl(s,c) */ s.clitno,c.contno from client_info s,cont_info c where s.clitno=c.clitno and c. =1000; no rows selected Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=1 Bytes=3638) 1 0 NESTED LOOPS (Cost=3 Card=1 Bytes=3638) 2 1 TABLE ACCESS (BY INDEX ROWID) OF CONT_INFO (Cost=2 Ca rd=1 Bytes=3265) 3 2 INDEX (UNIQUE SCAN) OF SYS_C0038012 (UNIQUE) (Cost=1 Card=100) 4 1 TABLE ACCESS (BY INDEX ROWID) OF CLIENT_INFO (Cost=1 C ard=1 Bytes=373) 5 4 INDEX (UNIQUE SCAN) OF SYS_C0038011 (UNIQUE) NESTLOOPS: 优化器将作为CONT_INFO驱动表,根据唯一性索引SYS_C0038012返回符合contno=‘1000’的数据,然后再与被驱动的表CLIENT_INFO关联查询出相应的clitno以及Contno,表CLIENT_INFO上也有唯一性索引SYS_C0038011,故能很多快地查询出对应的结果。 表的连接方式 SORT MERGE: 排序合并连接 在排序合并连接中是没有驱动表的概念的,两个互相连接的表按连接列的值先排序,排序完后形成的结果集再互相进行合并连接提取符合条件的记录。相比嵌套循环连接,排序合并连接比较适用于返回大数据量的结果。 表的连接方式 SORT MERGE: 表的连接方式 SQL select /*+use_merge(s,c) */ * from client_info s,cont_info c where s.clitno=c.clitno; 30278 rows selected. Execution Plan ---------------------------------------------------------- 0 SELECT STATEMENT Optimizer=CHOOSE (Cost=1959 Card=70980 Byte s=258225240) 1 0 MERGE JOIN (Cost=1959 Card=70980 Bytes=258225240) 2 1 TABLE ACCESS (BY INDEX ROWID) OF CONT_INFO (Cost=826 Card
文档评论(0)