DISK_READS、高 BUFFER_GETS、高 EXECUTIONS、高 SHARABLE_MEM 的語句。SQL_TEXT, COMMAND_TYPE (3=SELECT, 6=UPDATE, 7=DELETE, 47=PL/SQL), OPTIMIZER_MODE。ALTER SESSION SET SQL_TRACE=TRUE; → 執行 SQL → FALSE → TKPROF 格式化。PARSE 高 → 擴大 Shared Pool;QUERY/CURRENT 高 → 缺索引或連接順序不佳;DISK 高 → 索引可改善;LIBRARY CACHE MISS 多 → 擴大 Shared Pool。| 模式 | 行為 | 適用場景 | |
|---|---|---|---|
CHOOSE | 有統計用 CBO (目標最佳吞吐),無統計用 RBO | 混合環境過渡期 (已棄用) | |
ALL_ROWS | 全 CBO,目標最佳吞吐量 | 批次、報表、數倉、非即時查詢 | |
FIRST_ROWS_n | 全 CBO,目標前 N 行最佳響應 (1/10/100/1000) | Web 分頁、互動式查詢、OLTP | |
FIRST_ROWS | CBO + 啟發式,快速返回首批行 | 向後相容 | |
RULE | 純 RBO (已棄用) | 極少數舊系統相容 |
| 機制 | 原理 | 優勢場景 | 劣勢/風險 |
|---|---|---|---|
| Nested Loops (NL) | 外表驅動,逐行探測內表 (索引查找) | 外表小、內表大且連接欄有高選擇性索引、需快速返回首批行 | 內表無索引/選擇性差 → 災難;外表大 → 災難 |
| Sort-Merge Join (SMJ) | 雙邊排序後歸併 | 雙表大小相近、無可用索引、等值連接、並行查詢 | 需臨時表空間排序、僅支援等值連接、SORT_AREA 小時溢磁碟 |
| Hash Join (HJ) | 小表建 Hash Table 內存,大表 Probe | 大表關聯小表、等值連接、記憶體充足、並行查詢 | 記憶體不足溢寫臨時表空間 (One/Multi-Pass)、非等值不支援 |
CBO 自動選擇邏輯:統計資訊準確時傾向 Hash Join (大數據量);NL 適用首行響應優先;SMJ 為無索引大表等值連接備選。
OPERATION / OPTIONS:如 TABLE ACCESS FULL, INDEX RANGE SCAN, HASH JOIN。OBJECT_NAME / OBJECT_TYPE:涉及物件。COST / CARDINALITY / BYTES:成本估算與基數。ID / PARENT_ID:樹狀結構,CONNECT BY PRIOR ID = PARENT_ID 可重建完整計劃樹。SET AUTOTRACE TRACEONLY EXPLAIN STATISTICS
SELECT * FROM emp WHERE deptno = 10;
輸出執行計劃 + 實際統計 (consistent gets, physical reads, sorts, rows processed)。