Heim >Datenbank >MySQL-Tutorial >Oracle嵌套循环的执行计划优化
嵌套循环连接处理的两个数据集被称为外部循环(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