explain plan命令的輸出結果是解決sql效率低下問題的最重要的診斷工具之一。此命令加載一個工作表格(默認名稱為plan_table),表格中帶有oracle優化器為sql語句計算的執行計劃步驟。例如:
explain plan for
select empno, ename
from emp
where ename like 's%';
由于plan_table中的行形成了一個等級,對其進行查詢需要應用select語句中的兩個復雜子語句——start with與connect by。第一次在oracle 9i中出現并在10g中得到擴充的dbms_xplan使格式化及顯示執行計劃更為容易。
dbms_xplan.display是一個表格標值函數,它顯示plan_table的內容。與常規的純量函數substr或總計函數sum不同的是,表格函數返回一個完整的行集合(rowset)。它們用在select語句的from子語句中,前面必須加上table這個詞。如:
select *
from table(dbms_xplan.display);
列表a顯示的是上述explain plan語句的結果,并由dbms_xplan.display格式化。
值得注意的是,dbms_xplan還能從存儲在系統全局區(system global area, sga)內的指針顯示“實時”執行計劃。列表b顯示的是由用戶scott執行的同一sql語句。通過查看v$session視圖,你可以找到執行scott任務的最后一個sql id。這反過來又可輸入到dbms_xplan.display_cursor中,獲得指針所使用的執行計劃。
最后,dbms_xplan.display_awr函數可用來查尋oracle 10g的自動負荷信息庫(automatic workload repository, awr)獲得的歷史sql語句,并顯示它的執行計劃。它顯示一個你可以訪問的含七天歷史記錄的滾動窗口。
所有這三個函數都是協調sql語句的強大工具。
bob watkins(ocp、mcdba、mcse、mct)是一個有25年經驗的計算機專業人士,從事過技術培訓師、顧問與數據庫管理員等職 。
新聞熱點
疑難解答