程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Oracle數據庫 >> Oracle數據庫基礎 >> 用函數格式化EXPLAIN PLAN

用函數格式化EXPLAIN PLAN

編輯:Oracle數據庫基礎

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年經驗的計算機專業人士,從事過技術培訓師、顧問與數據庫管理員等職 。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved