ITPub博客

首页 > 数据库 > Oracle > MERGE JOIN CARTESIAN

MERGE JOIN CARTESIAN

原创 Oracle 作者:peter1166 时间:2016-04-12 13:17:31 0 删除 编辑


今天同事给我一个SQL,说很慢,让帮看一下。
打开执行计划一看, Id=31 有个 MERGE JOIN CARTESIAN  。
我问他是不是少写个关联条件? 他一看果然忘记写了,加上以后就好了。
 SQL太长不写了, 只把执行计划贴出来。
 
  Plan Hash Value  :

------------------------------------------------------------------------------------------------------------------
| Id   | Operation                             | Name                 | Rows    | Bytes      | Cost   | Time     |
------------------------------------------------------------------------------------------------------------------
|    0 | SELECT STATEMENT                      |                      | 9497371 | 3969901078 | 882603 | 02:56:32 |
|  * 1 |   INDEX RANGE SCAN                    | UX_MA_SORG_3         |       1 |         21 |      1 | 00:00:01 |
|  * 2 |   INDEX RANGE SCAN                    | UX_MA_SORG_3         |       1 |         21 |      1 | 00:00:01 |
|  * 3 |   INDEX RANGE SCAN                    | UX_MA_PROD_1         |       1 |         11 |      1 | 00:00:01 |
|    4 |   SORT AGGREGATE                      |                      |       1 |         52 |        |          |
|    5 |    VIEW                               |                      |       2 |        104 |      7 | 00:00:01 |
|    6 |     SORT GROUP BY                     |                      |       2 |        112 |      7 | 00:00:01 |
|    7 |      NESTED LOOPS                     |                      |         |            |        |          |
|    8 |       NESTED LOOPS                    |                      |       2 |        112 |      6 | 00:00:01 |
|    9 |        TABLE ACCESS BY INDEX ROWID    | MA_MODL_ALFT         |       2 |         56 |      4 | 00:00:01 |
| * 10 |         INDEX RANGE SCAN              | PK_MA_MODL_ALFT      |       2 |            |      2 | 00:00:01 |
| * 11 |        INDEX UNIQUE SCAN              | PK_MA_ALFT           |       1 |            |      0 | 00:00:01 |
|   12 |       TABLE ACCESS BY INDEX ROWID     | MA_ALFT              |       1 |         28 |      1 | 00:00:01 |
|   13 |   TABLE ACCESS BY INDEX ROWID         | MA_MSG_LIST          |       1 |         51 |      2 | 00:00:01 |
| * 14 |    INDEX UNIQUE SCAN                  | PK_MA_MSG_LIST       |       1 |            |      1 | 00:00:01 |
|   15 |    TABLE ACCESS BY INDEX ROWID        | MA_MSG_LIST          |       1 |         51 |      2 | 00:00:01 |
| * 16 |     INDEX UNIQUE SCAN                 | PK_MA_MSG_LIST       |       1 |            |      1 | 00:00:01 |
|   17 |     TABLE ACCESS BY INDEX ROWID       | MA_MSG_LIST          |       1 |         51 |      2 | 00:00:01 |
| * 18 |      INDEX UNIQUE SCAN                | PK_MA_MSG_LIST       |       1 |            |      1 | 00:00:01 |
|   19 |      TABLE ACCESS BY INDEX ROWID      | MA_MSG_LIST          |       1 |         51 |      2 | 00:00:01 |
| * 20 |       INDEX UNIQUE SCAN               | PK_MA_MSG_LIST       |       1 |            |      1 | 00:00:01 |
|   21 |   TABLE ACCESS BY INDEX ROWID         | MA_MSG_LIST          |       1 |         51 |      2 | 00:00:01 |
| * 22 |    INDEX UNIQUE SCAN                  | PK_MA_MSG_LIST       |       1 |            |      1 | 00:00:01 |
|   23 |    TABLE ACCESS BY INDEX ROWID        | MA_MSG_LIST          |       1 |         51 |      2 | 00:00:01 |
| * 24 |     INDEX UNIQUE SCAN                 | PK_MA_MSG_LIST       |       1 |            |      1 | 00:00:01 |
|   25 |     TABLE ACCESS BY INDEX ROWID       | MA_MSG_LIST          |       1 |         51 |      2 | 00:00:01 |
| * 26 |      INDEX UNIQUE SCAN                | PK_MA_MSG_LIST       |       1 |            |      1 | 00:00:01 |
|   27 |      TABLE ACCESS BY INDEX ROWID      | MA_MSG_LIST          |       1 |         51 |      2 | 00:00:01 |
| * 28 |       INDEX UNIQUE SCAN               | PK_MA_MSG_LIST       |       1 |            |      1 | 00:00:01 |
| * 29 |   INDEX RANGE SCAN                    | UX_CD_CODE_LIST_1    |       1 |         34 |      2 | 00:00:01 |
|   30 |   SORT ORDER BY                       |                      | 9497371 | 3969901078 | 882603 | 02:56:32 |
|   31 |    MERGE JOIN CARTESIAN               |                      | 9497371 | 3969901078 |  38879 | 00:07:47 |
|   32 |     NESTED LOOPS OUTER                |                      |     343 |     136514 |   1418 | 00:00:18 |
| * 33 |      HASH JOIN OUTER                  |                      |     343 |     113876 |    784 | 00:00:10 |
| * 34 |       HASH JOIN RIGHT OUTER           |                      |     343 |     106673 |    259 | 00:00:04 |
|   35 |        TABLE ACCESS FULL              | MA_CP_DC_PROD        |     442 |       8398 |      3 | 00:00:01 |
| * 36 |        HASH JOIN                      |                      |     343 |     100156 |    255 | 00:00:04 |
| * 37 |         HASH JOIN                     |                      |     380 |      98420 |    171 | 00:00:03 |
|   38 |          NESTED LOOPS                 |                      |       2 |        292 |      4 | 00:00:01 |
|   39 |           TABLE ACCESS BY INDEX ROWID | MA_CP_CUST           |       1 |         14 |      1 | 00:00:01 |
| * 40 |            INDEX UNIQUE SCAN          | PK_MA_CP_CUST        |       1 |            |      0 | 00:00:01 |
| * 41 |           TABLE ACCESS FULL           | MA_CP_DC             |       2 |        264 |      3 | 00:00:01 |
| * 42 |          TABLE ACCESS FULL            | HI_CP_BAD_RTN        |   26223 |    2963199 |    166 | 00:00:02 |
|   43 |         TABLE ACCESS FULL             | HI_CP_BAD_RTN_ST     |   23447 |     773751 |     84 | 00:00:02 |
|   44 |       INDEX FAST FULL SCAN            | UX_MA_USER_1         |  305807 |    6421947 |    524 | 00:00:07 |
| * 45 |      TABLE ACCESS BY INDEX ROWID      | HI_ATCH_FILE_DETL    |       1 |         66 |      3 | 00:00:01 |
| * 46 |       INDEX RANGE SCAN                | PK_HI_ATCH_FILE_DETL |       1 |            |      2 | 00:00:01 |
|   47 |     BUFFER SORT                       |                      |   27658 |     553160 | 882600 | 02:56:32 |
|   48 |      TABLE ACCESS FULL                | HI_CP_BAD_RTN_SBSC   |   27658 |     553160 |    109 | 00:00:02 |
------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
------------------------------------------
* 1 - access("A"."SORG_ID"=CASE :B1 WHEN '10111152' THEN 'S900' WHEN '10113232' THEN 'S900' ELSE :B2 END AND "A"."SORG_TP"='BRNC')
* 2 - access("A"."SORG_ID"=:B1 AND "A"."SORG_TP"='OFFC')
* 3 - access("A"."PROD_CD"=:B1)
* 10 - access("A"."MODL_CD"=:B1)
* 11 - access("A"."ALFT_ID"="B"."ALFT_ID")
* 14 - access("A1"."LANG_CD"='CN' AND "A1"."MSG_ID"='CPFR_APPLY')
* 16 - access("A1"."LANG_CD"='CN' AND "A1"."MSG_ID"='CPFR_APPROVAL')
* 18 - access("A1"."LANG_CD"='CN' AND "A1"."MSG_ID"='CPFR_QUALITY')
* 20 - access("A1"."LANG_CD"='CN' AND "A1"."MSG_ID"='CPFR_TRANSPORT')
* 22 - access("A1"."LANG_CD"='CN' AND "A1"."MSG_ID"='CPFR_APPLY')
* 24 - access("A1"."LANG_CD"='CN' AND "A1"."MSG_ID"='CPFR_APPROVAL')
* 26 - access("A1"."LANG_CD"='CN' AND "A1"."MSG_ID"='CPFR_QUALITY')
* 28 - access("A1"."LANG_CD"='CN' AND "A1"."MSG_ID"='CPFR_TRANSPORT')
* 29 - access("A"."CODE_DIV"='CPFR_REJC_ST' AND "A"."LANG_CD"='CN' AND "A"."CODE_CD"=:B1)
* 33 - access("T1"."REGI_ID"="T6"."USER_ID"(+))
* 34 - access("T1"."CP_DC_ID"="T4"."CP_DC_ID"(+) AND "T1"."PROD_CD"="T4"."PROD_CD"(+))
* 36 - access("T1"."SERL_NO"="T10"."SERL_NO")
* 37 - access("T1"."CP_DC_ID"="T2"."CP_DC_ID")
* 40 - access("T3"."CP_CUST_ID"='CT1003')
* 41 - filter("T2"."CP_CUST_ID"='CT1003')
* 42 - filter("T1"."USGE_YN"='0001')
* 45 - filter("A"."USE_YN"(+)='Y')
* 46 - access("T1"."ATCH_FILE_SEQ"="A"."ATCH_FILE_SEQ"(+))

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/13696961/viewspace-2079674/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 两数相乘
请登录后发表评论 登录
全部评论

注册时间:2015-06-26

  • 博文量
    10
  • 访问量
    14396