SQL 效能好壞,三成在寫法,七成在架構。掌握優化器模式、表存取路徑、共享池機制,寫出高效 SQL 將事半功倍。
| 模式 | 參數值 | 適用場景 |
|---|---|---|
| RULE (RBO) | OPTIMIZER_MODE=RULE | 舊系統、無統計資訊、簡單查詢 |
| COST (CBO) | OPTIMIZER_MODE=ALL_ROWS / FIRST_ROWS | 現代系統標準,需定期收集統計資訊 |
| CHOOSE | OPTIMIZER_MODE=CHOOSE (預設) | 不推薦:有統計用 CBO,無統計用 RBO,行為不可預測 |
最佳實務:ALTER SESSION SET OPTIMIZER_MODE = ALL_ROWS; 或實例級鎖定 CBO,並建立 DBMS_STATS 定時收集作業。
DB_FILE_MULTIBLOCK_READ_COUNT)。適用:小表、大比例存取、無合適索引。SHARED_POOL_SIZE 決定快取容量;越大重用機率越高。SESSION_CACHED_CURSORS / CURSOR_SHARING=FORCE/SIMILAR (謹慎評估副作用)。DBMS_SHARED_POOL.KEEP 釘住記憶體。