您的位置:首页 > 其它

hash join 驱动表和被驱动表不一定是全表扫描

2014-06-25 09:31 225 查看
explain plan for SELECT A.*
FROM (SELECT /*+ use_hash(cd cv)*/  CD.*,
nvl(CV.SUM_CI_BALANCE, 0) as SUM_CI_BALANCE,
nvl(CV.SUM_LN_BALANCE, 0) as SUM_LN_BALANCE
FROM OCRM_F_CI_CUST_DESC CD
left join (
select cust_id,
FR_ID,
sum(CI_BALANCE) as sum_CI_BALANCE,
sum(LN_BALANCE) as sum_LN_BALANCE
from OCRM_F_CI_CUST_VIEW
where 1 = 1
and FR_ID = '15601'
and MGR_ID = '00001'
group by cust_id, FR_ID
union
select cust_id,
FR_ID,
sum(CI_BALANCE) as sum_CI_BALANCE,
sum(LN_BALANCE) as sum_LN_BALANCE
from OCRM_F_CI_CUST_VIEW
where 1 = 1
and FR_ID = '15601'
and MGR_ID IN
(SELECT USER_ID
FROM ADMIN_AUTH_MANAGE_ACCOUNT
WHERE MANAGE_ID = '00001')
group by cust_id, FR_ID) CV
on CD.Cust_Id = CV.cust_id
and CD.Fr_Id = CV.fr_id
WHERE 1 = 1
and CD.FR_ID = '15601') A
where 1 = 1
AND ((EXISTS
(SELECT 1
FROM OCRM_F_CI_BELONG_CUSTMGR MGR
WHERE MGR.CUST_ID = A.CUST_ID
AND MGR.MGR_ID = '00001'
union
(SELECT 1
FROM OCRM_F_CI_BELONG_CUSTMGR MGR
WHERE MGR.CUST_ID = A.CUST_ID
and MGR.MGR_ID IN (SELECT USER_ID
FROM ADMIN_AUTH_MANAGE_ACCOUNT
WHERE MANAGE_ID = '00001')))
))
ORDER BY to_number(SUM_CI_BALANCE) DESC, to_number(SUM_LN_BALANCE) DESC;

select * from table(dbms_xplan.display());
Plan hash value: 4170314995

---------------------------------------------------------------------------------------------------------------------
| Id  | Operation                         | Name                    | Rows  | Bytes |TempSpc| Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                  |                         |     1 |   256 |       | 38928   (1)| 00:07:48 |
|   1 |  SORT ORDER BY                    |                         |     1 |   256 |       | 38928   (1)| 00:07:48 |
|*  2 |   HASH JOIN OUTER                 |                         |     1 |   256 |       | 38927   (1)| 00:07:48 |
|*  3 |    HASH JOIN                      |                         |     1 |   201 |       | 24033   (1)| 00:04:49 |
|   4 |     VIEW                          | VW_SQ_1                 |  1086K|    12M|       | 14082   (1)| 00:02:49 |
|   5 |      SORT UNIQUE                  |                         |     1 |    41M|    49M| 14082   (1)| 00:02:49 |
|   6 |       UNION-ALL                   |                         |       |       |       |            |          |
|*  7 |        INDEX FAST FULL SCAN       | IDX_CI_BELONG_CUSTMGR   |   162 |  4374 |       |  1473   (1)| 00:00:18 |
|*  8 |        HASH JOIN                  |                         |  1086K|    41M|       |  1496   (1)| 00:00:18 |
|*  9 |         INDEX RANGE SCAN          | IDX_AUTH_MANAGE_ACCOUNT |  6135 | 79755 |       |    21   (0)| 00:00:01 |
|  10 |         INDEX FAST FULL SCAN      | IDX_CI_BELONG_CUSTMGR   |  1043K|    26M|       |  1472   (1)| 00:00:18 |
|* 11 |     TABLE ACCESS FULL             | OCRM_F_CI_CUST_DESC     |   541K|    97M|       |  4994   (1)| 00:01:00 |
|  12 |    VIEW                           |                         |   414K|    21M|       | 14892   (1)| 00:02:59 |
|  13 |     SORT UNIQUE                   |                         |   414K|    20M|    31M| 14892   (1)| 00:02:59 |
|  14 |      UNION-ALL                    |                         |       |       |       |            |          |
|  15 |       HASH GROUP BY               |                         |    90 |  3510 |       |   113   (1)| 00:00:02 |
|* 16 |        TABLE ACCESS BY INDEX ROWID| OCRM_F_CI_CUST_VIEW     |   126 |  4914 |       |   112   (0)| 00:00:02 |
|* 17 |         INDEX RANGE SCAN          | IDX_OCRM_F_CI_CUST_VIEW |   146 |       |       |     3   (0)| 00:00:01 |
|  18 |       HASH GROUP BY               |                         |   414K|    20M|    31M| 14779   (1)| 00:02:58 |
|* 19 |        HASH JOIN RIGHT SEMI       |                         |   550K|    27M|       |  2874   (1)| 00:00:35 |
|* 20 |         INDEX RANGE SCAN          | IDX_AUTH_MANAGE_ACCOUNT |  6135 | 79755 |       |    21   (0)| 00:00:01 |
|* 21 |         TABLE ACCESS FULL         | OCRM_F_CI_CUST_VIEW     |   804K|    29M|       |  2851   (1)| 00:00:35 |
---------------------------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

2 - access("CD"."FR_ID"="CV"."FR_ID"(+) AND "CD"."CUST_ID"="CV"."CUST_ID"(+))
3 - access("VW_COL_1"="CD"."CUST_ID")
7 - filter("MGR"."MGR_ID"='00001')
8 - access("MGR"."MGR_ID"="USER_ID")
9 - access("MANAGE_ID"='00001')
11 - filter("CD"."FR_ID"='15601')
16 - filter("FR_ID"='15601')
17 - access("MGR_ID"='00001')
19 - access("MGR_ID"="USER_ID")
20 - access("MANAGE_ID"='00001')
21 - filter("FR_ID"='15601')
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: