暂无图片
分享
Thomas
2022-01-14
ORACLE 执行计划问题

Plan hash value: 1513680126
---------------------------------------------------------------------------------------------------------
| Id  | Operation                        | Name                 | Rows  | Bytes| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                 |                      |     1 |   **|   374   (2)| 00:00:04 |
|   1 |  SORT AGGREGATE                  |                      |     1 |   **|            |          |
|   2 |   NESTED LOOPS                   |                      |     1 |   **|   374   (2)| 00:00:04 |
|   3 |    NESTED LOOPS                  |                      |    23 |   **|   374   (2)| 00:00:04 |
|   4 |     NESTED LOOPS                 |                      |    23 |  1817|   369   (2)| 00:00:03 |
|   5 |      NESTED LOOPS                |                      |    12 |   648|     5   (0)| 00:00:01 |
|   6 |       NESTED LOOPS               |                      |     5 |   135|     2   (0)| 00:00:01 |
|*  7 |        INDEX UNIQUE SCAN         | IDX**31PK           |     1 |     9|     1   (0)| 00:00:01 |
|*  8 |        INDEX RANGE SCAN          | IDX**35PK           |     5 |    90|     1   (0)| 00:00:01 |
|   9 |       TABLE ACCESS BY INDEX ROWID| TBL10001TBL10001     |     2 |    54|     1   (0)| 00:00:01 |
|* 10 |        INDEX RANGE SCAN          | IDX10001IK1          |     2 |      |     1   (0)| 00:00:01 |
|* 11 |      TABLE ACCESS BY INDEX ROWID | TBL10017             |     2 |    50|    30   (0)| 00:00:01 |
|* 12 |       INDEX RANGE SCAN           | IDX10017PK           |     2 |      |    30   (4)| 00:00:01 |
|* 13 |     INDEX UNIQUE SCAN            | IDX10423PK           |     1 |      |     1   (0)| 00:00:01 |
|* 14 |    TABLE ACCESS BY INDEX ROWID   | TBL10423             |     1 |    22|     1   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
   7 - access("TBL1031"."STORE_NO"='00000456')
   8 - access("TBL1035"."STORE_NO"='00000456')
  10 - access("TBL10001"."STORE_NO"='00000456' AND "TBL10001"."STORE_NO"="TBL**35"."STORE_NO")
  11 - filter("TBL10017"."TRANSFER_FLAG"='0')
  12 - access("TBL10017"."STCOP_NO "='23' AND "TBL10017"."USERID"="TBL10001"."USERID")
       filter("TBL10017"."USERID"="TBL10001"."USERID")
  13 - access("TBL10423"."STCOP_NO "='23' AND "TBL10017"."STNO "="TBL10423"."STNO ")
  14 - filter(TO_CHAR(INTERNAL_FUNCTION("TBL10423"."DUEDATE"),'YYYYMM')='202109')

以上执行计划,其具体执行次序是:7,8,6,10,9,12,11,5,13,4,14,3,2,1,0   问题是:2、3、4、5、6都是NESTED LOOP,可是这些NESTED LOOP,究竟是那两个表(或两个索引,或两个中间结果)的NESTED LOOP,能标识出来吗?

收藏
分享
3条回答
默认
最新
你好我是李白

6的NL是7、8
5的NL是6、9
4的NL是5、11
3的NL是4、13
2的NL是11g以后引入的Vector I/O带来的变化,体现在NL上带来的变化一般叫Nested loop Join Batching,即拿到3的结果的一批rowid,批量访问一次14对应的表,减少物理IO数量。

暂无图片 评论
暂无图片 有用 0
打赏 0
暂无图片
Thomas

我搞错了,执行次序应该是7,8,6,10,9,5,12,11,4,13,3,14,2,1,0,按这个次序,每个NL下仅有两个分支。这样就没问题了。谢谢专家:你好我是李白

暂无图片 评论
暂无图片 有用 0
打赏 0
Thomas
问题已关闭: 问题已经得到解决
暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交