格式化显示执行计划的父子关系,通过父子关系,分析执行计划的执行顺序
select id, parent_id, operation
from (select level lvl,
id,
parent_id,
lpad(' ', level) || operation || ' ' || options || ' ' ||
object_name as operation
from plan_table
start with id = 0
connect by prior id = parent_id)
order by lvl desc, id;
ID PARENT_ID OPERATION
5 4 INDEX UNIQUE SCAN DEPT_ID_PK
7 6 INDEX UNIQUE SCAN LOC_ID_PK
4 3 TABLE ACCESS BY INDEX ROWID DEPARTMENTS
6 3 TABLE ACCESS BY INDEX ROWID LOCATIONS
3 2 NESTED LOOPS
8 2 TABLE ACCESS FULL EMPLOYEES
2 1 NESTED LOOPS
9 1 TABLE ACCESS FULL JOBS
1 0 HASH JOIN
0 SELECT STATEMENT
分析执行计划顺序
ID 红色显示的为子ID(也就是语句的执行顺序,后面我将具体分析),parent_id 黑色显示的为父ID. 查看缩进关系,最深缩进的ID为5和7,那么它们先执行,因为缩进的深度一致,根据先上后下的原则,ID=5的最先执行,ID=4第二个执行。依据父子关系图,ID=5的父亲为parent_id=4,ID=7的父亲为parent_id=6,
因为缩进的深度一致,根据先上后下的原则,ID=7的第三个执行,ID=6的第四个执行。依据父子关系图,ID=4的parent_id父亲为3,ID=6的父亲parent_id也为3,ID=8因为缩进深度与ID=3的缩进深度一致,根据先上后下的原则,ID=3的第五个执行,ID=8的第六个执行。依据父子关系图,ID=3的父亲为parent_id=2,ID=9的因为缩进的深度与ID=2一致,根据先上后下的原则,ID=2的第七个执行,ID=9的第八个执行。ID=2与ID=9的父亲都是1,第九个执行的是ID=1,最后执行的是ID=0。
执行的顺序ID为:5>4>7>6>3>8>2>9>1>0
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21266384/viewspace-767735/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/21266384/viewspace-767735/