oracle执行计划之执行顺序(一看就会!)

背景:本渣目前的工作是oracle数据库开发,刚从mysql转过来的时候,有极大的不适应!!经过两三个月的过渡,现在终于适应了DQL和存储过程的语法,熬过了这一阶段,才终于算是上了正轨。于是才有心思来研究一下进阶的东西,oracle的执行计划。

本文只讲述oracle执行计划的执行顺序,不涉及执行计划的具体底层活动(即每一步是干了什么,怎么实现的)。

如图,这是一个树形执行计划
在这里插入图片描述
文本格式:
在这里插入图片描述
那么如何来判断执行顺序呢?很简单,首先第一步,在树形执行计划中将所有子节点都合并省略,得到一个最简单的执行计划
在这里插入图片描述
按照从右往左、从上往下的顺序,先执行NESTED LOOPS,然后执行BUFFER SORT,参照文本格式的编号,执行顺序为 2 ,7,1,0。
然后打开2的子节点.
在这里插入图片描述
2的子节点里面先执行NESTED LOOPS,再执行TABLE ACCESS BY INDEX ROWID,参照文本格式的编号,即为3,6。
即可得到3,6,2,7,1,0。
同理,继续打开3的子节点:
在这里插入图片描述
先执行TABLE ACCESS FULL,再执行INDEX RANGE SCAN,即4,5。
合并得到4,5,3,6,2,7,1,0。
此时编号为2的节点,其包含的所有子节点的执行顺序已经出来了,可以看到编号7的节点也是有子节点的,该字节点编号为8
在这里插入图片描述
于是得到4,5,3,6,2,8,7,1,0。
是不是很简单咧!

本文参考:http://blog.itpub.net/30126024/viewspace-2141974/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值