1. 程式人生 > >檢視執行計劃的6種方法

檢視執行計劃的6種方法

1、explain plan for :如果某SQL執行非常長時間才會出結果,甚至慢到返回不了結果,這時候看執行計劃就只能用方法1,或者方法4;     缺點:沒有輸出執行時的相關統計資訊(產生多少邏輯讀,多少次遞迴呼叫,多少次物理讀的情況),無法判斷是處理了多少行,無法判斷表被訪問了多少次
2、set auto trace on:不一定是最真實得執行計劃,但是能很容易的看出是否排序;    缺點:必須要等到語句真正執行完畢後,才可以出結果,無法看到表被訪問了多少次
3、Events 10046  :能獲得真實的執行計劃、統計資訊,以及等待事件,如果SQL語句中有函式呼叫,SQL中有SQL,將會都被列出,無處遁形,可以跟蹤整個程式包;   缺點:步驟繁瑣,比較麻煩,無法判斷表被訪問了多少次,執行計劃中的謂詞部分不能清晰的展現出來。

4、dbms_xplan.display_cursor:可能通過SQL_ID和child id獲得某條語句的一條、或多條執行計劃;    缺點: 沒有輸出執行時的相關統計資訊(產生多少邏輯讀,多少次遞迴呼叫,多少次物理讀的情況),無法判斷是處理了多少行,無法判斷表被訪問了多少次。
5、修改statistics_level=all引數    :能很明顯地看出表被訪問次數、預估條數、實際條數、實際事件的資訊;     缺點: 無法控制記錄輸屏打出,不像autotrace有 traceonly 可以控制不將結果打屏輸出,看不出遞迴呼叫的次數,看不出物理讀的多少(不過邏輯讀才是重點)
6、awrsqrpt.sql : 能顯示某一事件段內指定SQL的執行計劃