1. 程式人生 > >檢視sql語句的執行計劃

檢視sql語句的執行計劃

EXPLAIN PLAN 是一個很好的分析SQL語句的工具,它甚至可以在不執行SQL的情況下分析語句. 通過分析,我們就可以知道ORACLE是怎麼樣連線表,使用什麼方式掃描表(索引掃描或全表掃描)以及使用到的索引名稱.
你需要按照從裡到外,從上到下的次序解讀分析的結果. EXPLAIN PLAN分析的結果是用縮排的格式排列的, 最內部的操作將被最先解讀, 如果兩個操作處於同一層中,帶有最小操作號的將被首先執行.
NESTED LOOP是少數不按照上述規則處理的操作, 正確的執行路徑是檢查對NESTED LOOP提供資料的操作,其中操作號最小的將被最先處理.

1.執行

explain plan set
statement_id='test_sql_plan_0001' for select * from table_name'

2.檢視sql執行計劃


   SELECT A.OPERATION,OPTIONS,OBJECT_NAME,OBJECT_TYPE,ID,PARENT_ID  
    FROM PLAN_TABLE  a  
    WHERE STATEMENT_ID='test_sql_plan_0001'  
    ORDER BY Id; 

3.檢視執行結果

    OPERATION   OPTIONS OBJECT_NAME OBJECT_TYPE ID  PARENT_ID
1   SELECT
STATEMENT 0 2 HASH JOIN OUTER 1 0 3 HASH JOIN 2 1 4 TABLE ACCESS BY INDEX ROWID TRD_CMMD_SEND_RELATION TABLE 3 2 5 BITMAP CONVERSION TO ROWIDS 4 3 6 BITMAP AND 5 4 7 BITMAP INDEX SINGLE VALUE IDX_CMMD_ID INDEX (BITMAP) 6
5 8 BITMAP INDEX SINGLE VALUE IDX_RELATION INDEX (BITMAP) 7 5 9 TABLE ACCESS FULL TRD_PLAT_ORG TABLE 8 2 10 TABLE ACCESS FULL TRD_PROJECT_ORG TABLE 9 1

4.分析
根據sql執行計劃,調優sql語句