SET AUTOTRACE ON -- 顯示計劃 + 統計 + 結果集
SET AUTOTRACE TRACEONLY -- 顯示計劃 + 統計,不顯示結果集(仍執行語句)
SET AUTOTRACE TRACEONLY EXPLAIN -- 僅產生計劃,不執行 SELECT(DML 仍執行)
優缺點:
ON / TRACEONLY 需等待語句執行完成,長 SQL 優化週期極長TRACEONLY EXPLAIN 秒級產生計劃,但無 Statistics(物理 I/O 次數),難以判斷效率優劣常見錯誤處理: 若報權限錯誤,依序執行:
@?/rdbms/admin/utlxplan.sql -- 建立 PLAN_TABLE
@?/sqlplus/admin/plustrce.sql -- 建立 PLUSTRACE role
GRANT PLUSTRACE TO username;
@?/rdbms/admin/utlxplan.sql
EXPLAIN PLAN SET STATEMENT_ID='test1' FOR SELECT ...
PLAN_TABLE雖原文未詳述,但現代最佳實踐是:
EXPLAIN PLAN FOR SELECT ...;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
或針對已執行游標:
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(sql_id, child_number, 'ALL'));
優點:自動格式化、顯示 Predicate、Cost、Bytes、Rows、Partition、Parallel 等豐富資訊,支援 AWR/ASH 歷史計劃查詢。
SET AUTOTRACE TRACEONLY EXPLAINDBMS_XPLAN.DISPLAY_CURSOR 結合 ALL 格式V$SQL_PLAN / DBA_HIST_SQL_PLAN 歷史視圖提取E-Rows(預估)與 A-Rows(實際)找出誤估根因