WEB开发网
开发学院数据库Oracle ORACLE执行计划的一些基本概念 阅读

ORACLE执行计划的一些基本概念

 2007-05-05 12:05:01 来源:WEB开发网   
核心提示: 内部连接过程:Row source1的Row 1 Probe ->Row source 2Row source1的Row 2 Probe ->Row source 2Row source1的Row 3 Probe ->Row source 2…&hel

内部连接过程:

Row source1的Row 1 ---------------- Probe ->Row source 2

Row source1的Row 2 ---------------- Probe ->Row source 2

Row source1的Row 3 ---------------- Probe ->Row source 2

…….

Row source1的Row n ---------------- Probe ->Row source 2

从内部连接过程来看,需要用row source1中的每一行,去匹配row source2中的所有行,所以此时保持row source1尽可能的小与高效的访问row source2(一般通过索引实现)是影响这个连接效率的关键问题。这只是理论指导原则,目的是使整个连接操作产生最少的物理I/O次数,而且如果遵守这个原则,一般也会使总的物理I/O数最少。但是如果不遵从这个指导原则,反而能用更少的物理I/O实现连接操作,那尽管违反指导原则吧!因为最少的物理I/O次数才是我们应该遵从的真正的指导原则,在后面的具体案例分析中就给出这样的例子。

在上面的连接过程中,我们称Row source1为驱动表或外部表。Row Source2被称为被探查表或内部表。

在NESTED LOOPS连接中,Oracle读取row source1中的每一行,然后在row sourc2中检查是否有匹配的行,所有被匹配的行都被放到结果集中,然后处理row source1中的下一行。这个过程一直继续,直到row source1中的所有行都被处理。这是从连接操作中可以得到第一个匹配行的最快的方法之一,这种类型的连接可以用在需要快速响应的语句中,以响应速度为主要目标。

如果driving row source(外部表)比较小,并且在inner row source(内部表)上有唯一索引,或有高选择性非唯一索引时,使用这种方法可以得到较好的效率。NESTED LOOPS有其它连接方法没有的的一个优点是:可以先返回已经连接的行,而不必等待所有的连接操作处理完才返回数据,这可以实现快速的响应时间。

上一页  4 5 6 7 8 9 10  下一页

Tags:ORACLE 执行 计划

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接