首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> Oracle 資料庫 >> Oracle 教學

Oracle執行計劃獲取與分析:EXPLAIN PLAN 與 DBMS_XPLAN 實戰

     編輯:Oracle 教學

Oracle SQL 執行計劃生成與可視化雙核心工具

步驟 1:生成計劃 (EXPLAIN PLAN)

EXPLAIN PLAN FOR
SELECT * FROM (
  SELECT * FROM dun_search_view WHERE 1=1
  AND ((salename='陳永智' AND xsqy='廣州辦事處')
       OR (','||fzuserid||',' LIKE '%,6839951,%'))
) WHERE ROWNUM <= 30;

步驟 2:顯示計劃 (DBMS_XPLAN)

SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);

進階顯示選項

-- 顯示詳細信息 (含Predicate/Projection/Outline等)
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(FORMAT => 'ALL'));

-- 顯示最後一次語句計劃
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR);

-- 指定SQL_ID與Child Number
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR('sql_id', 0, 'ALL'));

輸出關鍵欄位解讀

  • Operation:操作類型 (TABLE ACCESS FULL / INDEX RANGE SCAN / HASH JOIN 等)
  • Name:對象名 (表名/索引名)
  • Rows:預估返回行數 (Cardinality)
  • Cost (%CPU):優化器成本模型估算值
  • Time:預估執行時間
  • Predicate Information:存取/過濾謂詞條件 (編號對應 Operation ID)
  • Note:特殊提示 (如動態採樣、基線使用、適應性計劃等)

實戰技巧

  • 對比 EXPLAIN PLAN (預估) 與 DISPLAY_CURSOR (實際) 發現統計信息偏差
  • 關注 Cost 與 Rows 巨大偏差 → 需收集/修正統計信息
  • FULL TABLE SCAN 不一定是壞事,小表/高選擇率時最優
  • 善用 FORMAT => 'ALL +OUTLINE' 獲取完整 Outline 用於 SPM 固化
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved