首頁>Club>
7
回覆列表
  • 1 # 無為輕狂

    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語句的強大工具。

  • 中秋節和大豐收的關聯?
  • 九陽淨水器多少錢一臺?