Итак, вы полагаетесь на семантику коротких замыканий логических выражений для вызова условия IS NULL
? Это похоже на работу.
Один интересный момент заключается в том, что оптимизатор запросов должен учитывать фактическое выражение, такое как 1 = 0
, которое не имеет параметров. В этом случае, поскольку оптимизатор не знает, является ли выражение константой true
или false
до времени выполнения, это означает, что он не может его разложить. Он должен вычислять выражение для каждой строки.
Таким образом, можно предположить, что это добавит к запросу незначительную стоимость по сравнению с той, которая будет стоить, если бы вы использовали непараметрическое константное выражение.
Тогда сочетание с OR
с выражением IS NULL
также может иметь значение для оптимизатора. Возможно, он решит, что не может извлечь выгоду из индекса на deleted_on
, тогда как в более простом выражении он будет иметь. Это зависит от используемой вами реализации СУБД и распределения значений в вашей базе данных.