Выражения SQLServer CASE - оценка короткого замыкания?
Я пытаюсь оптимизировать запрос, который делает что-то вроде этого:
SELECT
...
CASE WHEN (condition) THEN (expensive function call #1)
ELSE (expensive function call #2)
END
...
План запроса показывает, что даже в тех случаях, когда 100% строк удовлетворяют предложению WHEN, значительная часть времени затрачивается на вызовы результата в ветви ELSE.
Единственный способ понять это - предположить, что SQLServer оценивает оба результата, а затем выбирает только один на основе оценки условия WHEN, но я не могу найти какую-либо определенную ссылку на то, являются ли результаты CASE или нет. Заявление оценивается до условных. Кто-нибудь может уточнить или указать мне ссылку?