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


嵌套循环连接处理的两个数据集被称为外部循环(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

  • 1
  • 2
  • 下一页

相关内容