Является ли T- SQL CROSS APPLY более эффективным для вычислений, чем добавление выражения или вычислений в оператор SELECT? - PullRequest
0 голосов
/ 21 апреля 2020

Если я хочу сделать некоторые вычисления, какой способ более эффективен

  1. Первый способ Вычисления и выражения в SELECT
SELECT ID,
        CASE WHEN COLUMN1 ='A' THEN 'YES' END AS COLUMN1,
        CAST('20201012' AS DATE) AS DATE
FROM TABLE
Второй способ, выражения и вычисления в CROSS APPLY
SELECT ID,
        CAL.COLUMN1,
        CAL.DATECOL
FROM TABLE
CROSS APPLY(
        SELECT  CASE WHEN COLUMN1 ='A' THEN 'YES' END AS COLUMN1,
                CAST('20201012' AS DATE) AS DATECOL
) AS CAL

благодарен за любые комментарии, спасибо

1 Ответ

1 голос
/ 21 апреля 2020

Если вы ссылаетесь на выражения один раз, то я думаю, что они будут очень похожи по производительности. Для 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...