ホームページ >データベース >mysql チュートリアル >Oracle嵌套循环的执行计划优化

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

WBOY
WBOYオリジナル
2016-06-07 17:21:281437ブラウズ

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。