僅在 Rule-Based Optimizer (RBO) 有效。Oracle 解析器從右至左處理 FROM 子句,最右側表 (Driving Table) 最先處理。
SELECT * 需查詢資料字典展開欄位清單ARRAY BIND)SET ARRAYSIZE 200 (預設 15)-- 單次掃描完成多條件統計
SELECT
SUM(DECODE(status, 'A', 1, 0)) cnt_a,
SUM(DECODE(status, 'B', 1, 0)) cnt_b,
SUM(DECODE(status, 'C', 1, 0)) cnt_c
FROM orders;
CASE WHEN 或 PIVOT (11g+)UNION ALL 或條件聚合DELETE FROM emp e
WHERE e.rowid > (SELECT MIN(x.rowid) FROM emp x WHERE x.emp_no = e.emp_no);
| 特性 | DELETE | TRUNCATE |
|---|---|---|
| Rollback Segment | 記錄可恢復資訊 | 不記錄,不可恢復 |
| 觸發器 | 觸發 ROW TRIGGER | 不觸發 |
| 高水位線 | 不重置 | 重置至 0 |
| 速度 | 慢 (逐列) | 極快 (元資料操作) |
| 類型 | DML | DDL (隱含 COMMIT) |
| 適用範圍 | 任意條件刪除 | 僅限全表清空 |