SQL Server: интересует влияние на производительность этого оператора SQL - PullRequest
1 голос
/ 14 июля 2011

У меня есть следующий оператор SQL:

WITH w1 AS (SELECT [Number] AS v1 FROM [MyTable] WHERE <condition>)
SELECT
  SUM(CASE WHEN v1 < @Value THEN v1 ELSE @Value END)
FROM
  w1;

Мне просто любопытно сказать, если MyTable содержит 10 записей, соответствующих тому, сколько раз оператор будет обрабатываться при выполнении оператора SQL выше?

Ответы [ 2 ]

4 голосов
/ 14 июля 2011

Это будет просто встроено и будет обрабатываться так же, как если бы вы написали

SELECT SUM(CASE WHEN [Number] < @Value THEN [Number] ELSE @Value END)
FROM [MyTable] 
WHERE <condition>
1 голос
/ 14 июля 2011

Скорее всего, план выполнения будет вычислять скаляр для каждой строки один раз, а затем агрегировать.w1 будет запрошен один раз для всех соответствующих значений.

...