在 SQL*Plus 或 SQLcl 中輸入:
SET AUTOTRACE ON
後續執行的每一條 SQL 都會自動顯示執行計畫與統計資訊。若只想看計畫不想執行,可用:
SET AUTOTRACE TRACEONLY EXPLAIN
| 指令 | 說明 |
|---|---|
SET AUTOTRACE ON | 顯示執行計畫、統計資訊,並回傳查詢結果 |
SET AUTOTRACE TRACEONLY | 顯示計畫與統計,不回傳結果 |
SET AUTOTRACE TRACEONLY EXPLAIN | 僅顯示執行計畫(不執行 SQL) |
SET AUTOTRACE TRACEONLY STATISTICS | 僅顯示統計資訊(需執行 SQL) |
SET AUTOTRACE OFF | 關閉自動追蹤 |
適用於已執行的 SQL,提供更豐富的格式與資訊:
-- 1. 先執行目標 SQL(可加上 /*+ GATHER_PLAN_STATISTICS */ 取得實際行數)
SELECT /*+ GATHER_PLAN_STATISTICS */ * FROM employees WHERE department_id = 10;
-- 2. 查看該游標的詳細執行計畫
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_CURSOR(FORMAT => 'ALLSTATS LAST'));
常用 FORMAT 參數:
BASIC:基本資訊TYPICAL:預設,含成本、位元組、基數ALL:完整資訊含存取條件、投影資訊ALLSTATS LAST:含實際執行統計(A-Rows、A-Time、Buffers 等),效能調校首選ADVANCED:含 Outline、Peeked Binds 等進階資訊SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY_AWR('sql_id', plan_hash_value));
@$ORACLE_HOME/rdbms/admin/utlxplan.sql,新版自動建立全域暫存表。TRACEONLY EXPLAIN 不會執行 DML,但 DDL 仍會執行。GATHER_PLAN_STATISTICS。SET AUTOTRACE ON 是快速檢視計畫的入門指令;DBMS_XPLAN.DISPLAY_CURSOR 則是深度調校的專業工具。熟練掌握兩者,讓 SQL 調優事半功倍。