Если вы ссылаетесь на выражения один раз, то я думаю, что они будут очень похожи по производительности. Для CROSS APPLY
может быть небольшая нагрузка, обеспечивающая источник ввода для значений, но это будет очень незначительным.
Если вы ссылаетесь на выражения более одного раза, то я ожидаю, что CROSS APPLY
чтобы быть лучше - функции будут оцениваться только один раз. На самом деле, SQL Сервер может оптимизировать запрос для запуска только одного вызова функции, но нет никакой гарантии.
Тем не менее, я бы рекомендовал использовать VALUES
вместо SELECT
:
SELECT ID, CAL.COLUMN1, CAL.DATECOL
FROM TABLE CROSS APPLY
(VALUES (CASE WHEN COLUMN1 ='A' THEN 'YES' END AS COLUMN1,
CAST('20201012' AS DATE)
)
) V(COLUMN1, DATECOL)