Oracle 11g 递归+ exists执行计划的改变(2)


  无意之中把exits改为了in,问题解决了。
SQL> set autotrace traceonly
SQL> SELECT *
      FROM (SELECT DISTINCT A.*
              FROM GG_MATERIAL_CLASSIFY A
            CONNECT BY PRIOR PARENT_CLASSIFY_ID = CLASSIFY_ID
            START WITH CLASSIFY_ID IN
                        (SELECT DISTINCT M.CLASSIFY_ID
                          FROM GG_DISTRIBUTION D, GG_MATERIAL M
                          WHERE D.MATERIAL_ID = M.MATERIAL_ID
                            AND D.ACTUAL_QTY > 0
                            AND D.DATA_AREA LIKE '03%')) B
    WHERE B.PARENT_CLASSIFY_ID = '201'
    ORDER BY B.CODE ASC;
已选择11行。
已用时间:  00: 00: 01.00
执行计划
----------------------------------------------------------
Plan hash value: 4133877384
------------------------------------------------------------------------------------------------------------------------------------------------
| Id  | Operation                                | Name                      | Rows  | Bytes |TempSpc| Cost (%CPU)| Time    | Pstart| Pstop |
------------------------------------------------------------------------------------------------------------------------------------------------
|  0 | CREATE TABLE STATEMENT                    |                            |  645K|    57M|      |  3895  (1)| 00:00:47 |      |      |
|  0 | SELECT STATEMENT                          |                            |  3246 |  3445K|      | 16641  (1)| 00:03:20 |      |      |
|  1 |  LOAD AS SELECT                          | A2K_GG_INVOICE_ITEM_140106 |      |      |      |            |          |      |      |
|  1 |  SORT ORDER BY                            |                            |  3246 |  3445K|      | 16641  (1)| 00:03:20 |      |      |
|  2 |  TABLE ACCESS FULL                      | GG_INVOICE_ITEM            |  645K|    57M|      |  1984  (2)| 00:00:24 |      |      |
|*  2 |  VIEW                                    |                            |  3246 |  3445K|      | 16641  (1)| 00:03:20 |      |      |
|  3 |    HASH UNIQUE                            |                            |  3246 |  653K|      | 16641  (1)| 00:03:20 |      |      |
|*  4 |    CONNECT BY WITHOUT FILTERING (UNIQUE) |                            |      |      |      |            |          |      |      |
|*  5 |      HASH JOIN SEMI                      |                            |  1623 |  256K|      | 16626  (1)| 00:03:20 |      |      |
|  6 |      TABLE ACCESS FULL                  | GG_MATERIAL_CLASSIFY      |  1864 |  262K|      |    14  (0)| 00:00:01 |      |      |
|  7 |      VIEW                                | VW_NSO_1                  |  144K|  2533K|      | 16610  (1)| 00:03:20 |      |      |
|*  8 |        HASH JOIN                          |                            |  144K|  6051K|  3784K| 16610  (1)| 00:03:20 |      |      |
|  9 |        INDEX FAST FULL SCAN              | INX_GG_MATERIAL_CLASSIFY  |  117K|  2403K|      |  145  (2)| 00:00:02 |      |      |
|* 10 |        TABLE ACCESS BY GLOBAL INDEX ROWID| GG_DISTRIBUTION            |  144K|  3097K|      | 16045  (1)| 00:03:13 | ROWID | ROWID |
|* 11 |          INDEX RANGE SCAN                | IX_DISTRIBU_ACT_QTY01      |  144K|      |      |  346  (1)| 00:00:05 |      |      |
|  12 |      TABLE ACCESS FULL                    | GG_MATERIAL_CLASSIFY      |  1864 |  262K|      |    14  (0)| 00:00:01 |      |      |
------------------------------------------------------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
  2 - filter("B"."PARENT_CLASSIFY_ID"='201')
  4 - access("CLASSIFY_ID"=PRIOR "PARENT_CLASSIFY_ID")
  5 - access("CLASSIFY_ID"="CLASSIFY_ID")
  8 - access("D"."MATERIAL_ID"="M"."MATERIAL_ID")
  10 - filter("D"."DATA_AREA" LIKE '03%')
  11 - access("D"."ACTUAL_QTY">0)
统计信息
----------------------------------------------------------
          0  recursive calls
          0  db block gets
    113928  consistent gets
          0  physical reads
          0  redo size
      1960  bytes sent via SQL*Net to client
        338  bytes received via SQL*Net from client
          2  SQL*Net roundtrips to/from client

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/9cfc46e3fa0ba17781a6a4e99bc01d79.html