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