Выбрать с Выбрать против CTE - Производительность - PullRequest
0 голосов
/ 15 апреля 2019

В чем разница между выбором с использованием внутри выбора и избеганием выбора внутри выбора и использованием CTE?

Когда я вижу план выполнения, нет разницы в плане выполнения?

Есть ли в этом разница? Когда я использую CTE, будет ли он выполняться один раз или всякий раз, когда я вызываю CTE внутри select, он будет вызываться несколько раз?

SELECT ID,
(SELECT TOP 1 [TEXT] FROM TABLEB B 
WHERE B.NAME ='ABC' AND B.CUSTOMER='ABC'
AND B.SERVICE=A.SERVICE AND B.USERID=DBO.fnGetUser()
ORDER BY DESC) 
FROM TABLEA A

Обновлено до:

WITH cte(SERVICE)
      AS
      (
           SELECT SERVICE FROM TABLEB B 
    WHERE B.NAME ='ABC' AND B.CUSTOMER='ABC'
 AND B.USERID=DBO.fnGetUser() 
      )
 SELECT ID,
    (SELECT  TOP 1 [TEXT] FROM cte B 
    WHERE B.SERVICE=A.SERVICE) 
    FROM TABLEA A
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...