Замена оператора сравнения на противоположный

Оптимизатор всегда упрощает условие, чтобы избавиться от логического оператора NOT.

Это преобразование подразумевает замену исходного оператора сравнения эквивалентным противоположным оператором.

Например,

Исходная конструкция                    Оптимизированная конструкция
---------------------------------------------------------------------
NOT(< выражение1 > = < выражение2 >)        < выражение1 > != < выражение2 >
NOT(< выражение1 > != < выражение2 >)       < выражение1 > = < выражение2 >
NOT(< выражение1 > LIKE                   < выражение1 > NOT LIKE
 < выражение2 >)                           < выражение2 >
NOT(< выражение1 > NOT LIKE               < выражение1 > LIKE
 < выражение2 >)                           < выражение2 >

Часто условие, содержащее логический оператор NOT, можно записать многими разными способами. Оптимизатор пытается трансформировать первоначальное условие таким образом, чтобы составляющие его условия стали как можно более простыми, даже если результирующее условие будет содержать больше операторов NOT.

Например,

Исходная конструкция             Оптимизированная конструкция
---------------------------------------------------------------------
NOT (< условие1 > OR < условие2 >)  (NOT < условие1 >) AND (NOT < условие2 >)
NOT (< условие1 > AND < условие2 >) (NOT < условие1 >) OR (NOT < условие2 >)