dbdao吧 关注:1,183贴子:4,074
  • 5回复贴,共1

执行计划的实际执行次数疑问

只看楼主收藏回复

10.2.0.5 on windows 2008
以下sql,
select
count(av_sal)
from (
select
outer.dept_no,
outer.sal,
outer.emp_no,
outer.padding,
(
selectavg(inner.sal)
fromempinner
whereinner.dept_no = outer.dept_no
) av_sal
fromempouter
)
where
sal > av_sal
;
执行计划如附件,我的理解:
ID 5->ID 4,对于ID4返回的结果集里的每一行执行一次ID 1(这里由于distinct value,所以ID 1只执行了3次)
av_sal这个值由执行了3次ID 1得到的,那ID4先执行了(且要根据av_sal做一个过滤动作),ID 4 为何只执行了一次呢?
--------------------------------------------------------------------------------
------
| Id | Operation | Name | Starts | E-Rows | A-Rows | A-Time | Buf
fers |
--------------------------------------------------------------------------------
------
| 0 | SELECT STATEMENT | | 1 | | 1 |00:00:00.65 |
4641 |
| 1 | SORT AGGREGATE | | 6 | 1 | 6 |00:00:00.27 |
3978 |
|* 2 | TABLE ACCESS FULL | EMP | 6 | 3333 | 20000 |00:00:00.18 |
3978 |
| 3 | SORT AGGREGATE | | 1 | 1 | 1 |00:00:00.65 |
4641 |
|* 4 | VIEW | | 1 | 20000 | 9998 |00:00:00.58 |
4641 |
| 5 | TABLE ACCESS FULL| EMP | 1 | 20000 | 20000 |00:00:00.12 |
663 |
--------------------------------------------------------------------------------
------
Predicate Information (identified by operation id):
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
----------------------------------------
---------------------------------------------------
2 - filter("INNER"."DEPT_NO"=:B1)
4 - filter("SAL">"AV_SAL")


1.txt
大小:1.81KB下载:3次转存:0次
文件已失效
1楼2016-04-10 17:12回复
    使用sqld360 收集下该SQL_ID的数据 并上传


    2楼2016-04-10 21:47
    回复
      2026-01-19 22:29:55
      广告
      不感兴趣
      开通SVIP免广告
      sqld360下载地址:https://github.com/mauropagano/sqld360


      3楼2016-04-10 21:47
      回复
        因为sqld360在windows上运行有点问题,所以我又把sql在11.2.0.4上执行:sqld360结果如下
        http://pan.baidu.com/s/1miSww0w


        4楼2016-04-12 08:32
        回复

          执行步骤如上, 2 => 1 ,

          执行计划starts 显示 id 1 和 id 2 都是执行6次 未见 你说的执行3次啊


          5楼2016-04-12 10:21
          回复
            不好意思,2和1应该是执行6次。
            其实我这里是想问:
            看上去3(执行一次)应该是控制的子节点
            那么这个地方是不是应该是树的右边先执行呢,5-》4-》3-》2-》1
            相关组合的特点
            子节点在父节点之前执行
            ID最小的子节点控制其他节点的执行
            子节点按照ID顺序执行,但并丌是 ID N执行完成后才执行ID N+1,而是交叉执行
            负责控制的子节点一般只运行一次,其他节点可能运行0次戒者很多次


            6楼2016-04-12 14:27
            回复