explain plan for
SELECT * FROM schema2.mv_a_data mv
WHERE mv.routing_code_type_id = 3
AND mv.static_data_status_id IN(5, 8)
AND mv.acct_currency_ind_id NOT IN
(SELECT DISTINCT te.acct_currency_ind_id
FROM schema1.tem_ele te
WHERE te.lis_tem_id IN
(SELECT lis_tem_id
FROM schema1.lis_tem
WHERE lis_tem.template_type_id = 2
AND lis_tem.deleted_flag = 'N' )
AND te.acct_currency_ind_id IS NOT NULL
)
ORDER BY mv.treasury_region_code,
mv.legal_entity_mnemonic,
mv.currency_code;
select *
from TABLE(DBMS_XPLAN.DISPLAY('PLAN_TABLE', null,'ADVANCED'));
------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 892 | 318K| 69 (2)| 00:00:01 |
| 1 | SORT ORDER BY | | 892 | 318K| 69 (2)| 00:00:01 |
|* 2 | HASH JOIN RIGHT ANTI | | 892 | 318K| 68 (0)| 00:00:01 | `
| 3 | VIEW | VW_NSO_1 | 1457 | 8742 | 11 (0) | 00:00:01 |
|* 4 | HASH JOIN | | 1457 | 33511 | 11 (0)| 00:00:01 |
|* 5 | TABLE ACCESS FULL | lis_tem | 100 | 1100 | 3 (0)| 00:00:01 |
|* 6 | TABLE ACCESS FULL | tem_ele | 3271 | 39252 | 8 (0)| 00:00:01 |
|* 7 | MAT_VIEW ACCESS FULL| mv_a_data | 2348 | 825K| 57 (0)| 00:00:01 |
我想讀給定的解釋計劃。根據我的理解,在查看解釋計劃並根據 ,首先完成LIS_TEM表和TEM_ELE的FTS,然後使用HASH JOIN連接它們。閱讀甲骨文解釋計劃
問題1 - 我可以將此HASH JOIN更改爲NESTED LOOP嗎?
我只是問學習的目的。我知道HASH JOIN在這裏很好。 哈希連接後,我想它會去ID3,即查看VW_NSO_1和ID7 MAT_VIEW。
問題2 - 什麼是VIEW VW_NSO_1,SQL查詢的哪個子句負責將它帶到這裏?
問題3 - 我將如何閱讀計劃的其餘部分?
問題4 - 爲什麼HASH JOIN RIGHT ANTI進來?
請幫助我詳細瞭解上述解釋計劃。謝謝,讓我知道你是否需要任何進一步的細節。
你或某人請回答問題2,3和4? –