日期:2014-05-16  浏览次数:20484 次

执行计划的执行顺序

执行计划的执行顺序

??? 如果要了解执行计划和执行顺序,必须理解执行计划的父子关系。执行计划是一个树状结构,顶层的 STATEMENT 是这棵树的根。父子关系按照如下的树状结构组织:

PARENT

FIRST? CHILD

SECOND CHILD

在这个例子里, FIRST CHILD 最先执行,然后是 SECOND CHILD ,这两个步骤执行完毕后,执行 PARENT 。下面是一个更多层次的结构:

PARENT1

FIRST? CHILD

FIRST? GRANDCHILD

SECOND CHILD

FIRST? GRANDCHILD 是第一个执行的步骤,然后是 FIRST CHILD 。下面通过一个真实的执行计划来验证这个原则:

set autotrace traceonly explain

select ename,dname? from emp, dept?

where emp.deptno=dept.deptno?

and dept.dname in

? (‘ACCOUNTING’,’RESEARCH’,’SALES’,’OPERATIONS’);

15 rows selected.

这个语句的执行计划如下:

Execution Plan

----------------------

?? 0????? SELECT STATEMENT Optimizer=CHOOSE (Cost=3 Card=8 Bytes=248)

?? 1??? 0?? HASH JOIN (Cost=3 Card=8 Bytes=248)

?? 2??? 1???? TABLE ACCESS (FULL) OF DEPT (Cost=1 Card=3 Bytes=36)