Предложение WHERE-CASE Подзапрос Производительность

Вопрос может быть специфичным для сервера SQL. Когда я пишу запрос, такой как:

SELECT * FROM IndustryData WHERE Date='20131231'
AND ReportTypeID = CASE WHEN (fnQuarterDate('20131231')='20131231') THEN  1 
                        WHEN (fnQuarterDate('20131231')!='20131231') THEN  4
                        END;

Вызывает ли функция вызов fnQuarterDate (или любой подзапрос) в регистре внутри предложения Where для КАЖДОЙ строки таблицы?

Как было бы лучше, если бы я заранее получил значение функции (или любого подзапроса) внутри переменной вроде:

DECLARE @X INT
IF fnQuarterDate('20131231')='20131231'
SET @X=1 
ELSE
SET @X=0
SELECT * FROM IndustryData WHERE Date='20131231'
AND ReportTypeID = CASE WHEN (@X = 1) THEN  1 
                        WHEN (@X = 0) THEN  4
                        END;

Я знаю, что в MySQL, если в предложении WHERE есть подзапрос внутри IN (..), он выполняется для каждой строки, я просто хотел узнать то же самое для SQL SERVER.

...

Просто заполнил таблицу примерно 30K строками и выяснил разницу во времени:

Query1 = 70мс; Запрос 2 = 6 мс. Я думаю, что это объясняет, но все еще не знаю фактических фактов, стоящих за этим.

Также будет ли какая-то разница, если вместо UDF был простой подзапрос?

Ответы на вопрос(3)

Ваш ответ на вопрос