Wyrażenia CASE SQLServer - ocena zwarcia?

Próbuję zoptymalizować zapytanie, które robi coś takiego:

SELECT
   ...
   CASE WHEN (condition) THEN (expensive function call #1)
   ELSE (expensive function call #2) 
   END
...

Plan kwerend pokazuje, że nawet w przypadkach, w których 100% wierszy spełnia klauzulę WHEN, znaczna część czasu jest wydawana na wywołania wyniku w gałęzi ELSE.

Jedynym sposobem, aby to zrozumieć, jest założenie, że SQLServer ocenia oba wyniki, a następnie wybiera tylko jeden na podstawie oceny warunku WHEN, ale nie mogę znaleźć żadnego ostatecznego odniesienia do tego, czy wyniki CASE instrukcja jest oceniana przed warunkami. Czy ktoś może wyjaśnić lub wskazać mi odniesienie?

questionAnswers(2)

yourAnswerToTheQuestion