ALTER TABLE ... CACHE;8i+ 強制置入 KEEP Pool| 情境 | 失效寫法 | 索引友善寫法 |
|---|---|---|
| 空值判斷 | WHERE col IS NULL | 避免索引欄位存 NULL;改用預設值或函數索引 |
| 欄位聯接 | WHERE first_name||last_name = 'BillClinton' | WHERE first_name='Bill' AND last_name='Clinton' |
| 前置萬用字元 | WHERE name LIKE '%clinton%' | WHERE name LIKE 'clinton%'(後置萬用字元可用索引) |
| ORDER BY 非索引/運算式 | ORDER BY sal*12 | 改寫使用索引欄位;或建立函數索引 |
| NOT / <> 運算子 | WHERE salary <> 3000 | WHERE salary < 3000 OR salary > 3000 |
| IN 子查詢 | WHERE id IN (SELECT ...) | WHERE EXISTS (SELECT 'X' FROM ...) — 相關子查詢可提早終止 |
原則:避免在索引欄位上使用函數、運算式、隱含轉型。
ORDER BY、GROUP BY、CREATE INDEX、聯結觸發 Merge Sortsort_area_size;共享連線:Large Poolsort_area_size、sort_area_retained_size;監控 V$SORT_USAGE、V$SORT_SEGMENTDBMS_STATS.GATHER_SCHEMA_STATS)EXPLAIN PLAN / AUTOTRACE)