Home  >  Article  >  Database  >  Oracle嵌套循环的执行计划优化

Oracle嵌套循环的执行计划优化

WBOY
WBOYOriginal
2016-06-07 17:21:281431browse

嵌套循环连接处理的两个数据集被称为外部循环(outer loop,也就是驱动数据源,driving row soulce )和内部循环〔 inner loop )

嵌套循环连接处理的两个数据集被称为外部循环(outer loop,也就是驱动数据源,driving row soulce )和内部循环〔 inner loop )。外部循环为左子节点,内部循环为右子节点.如图10 一6 所示,当外部循环执行一次的时候,内部循环需要针对外部循环返回的每条记录执行一次。

嵌套循环连接有以下几点特征:

口左子节点(外部循环)只会执行一次,而右子节点(内部循环)一般会执行很多次。

口在所有数据处理完之前,就可以返回结果集的第一条记录。

口可以有效利用索引来处理限制条件与连接条件。

口支持所有类型的连接。

两表连接

下面是个简单的两表嵌套循环连接的执行计划。同时也描述了如何使用提示1eading 与use_n1来强制使用嵌套循环连接。Leading提示要求先访问表tl ,也就是,,它指定了哪张表作为外部循环表使用。use_nl提示指定了具体使用哪种连接方法来将内部循环返回的数据(表t2 )与表t1 连接起来。有必要指出的是:usenl 提示并没有引用表t1 。

SELECT /* + leading (t1) use_nl(t2) full(t1) full(t2)*/ *

FROM t1 ,t2  WHERE tl.id =t2.id AND tl.n=19

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn