優化階段一次性計算常量表達式:sal > 24000/12 → sal > 2000。但不會化簡跨比較運算子的列表達式(如 sal*12 > 24000),開發者應習慣寫「列 運算子 常量」。
| 原操作符 | 轉換後等價形式 |
|---|---|
| LIKE 無萬用字元 | ename LIKE 'SMITH' → ename = 'SMITH'(僅 VARCHAR2 生效) |
| IN 列表 | ename IN ('A','B') → ename='A' OR ename='B' |
| ANY/SOME 列表 | sal > ANY (v1,v2) → sal>v1 OR sal>v2 |
| ANY/SOME 子查詢 | x > ANY (SELECT ...) → EXISTS (SELECT ... AND x>sal) |
| ALL 列表 | sal > ALL (v1,v2) → sal>v1 AND sal>v2 |
| ALL 子查詢 | x > ALL (SELECT ...) → NOT EXISTS (SELECT ... AND x<=sal) |
| BETWEEN | sal BETWEEN 2000 AND 3000 → sal>=2000 AND sal<=3000 |
| NOT 簡化 | NOT deptno = ... → deptno <> ...;NOT (A OR B) → NOT A AND NOT B |
WHERE col1=const AND col1=col2 → 推導 col2=const(僅 CBO 生效,需索引支援)DETERMINISTIC,優化器可在同一查詢、函數索引、物化視圖中複用結果。合法性由開發者負責。