SQL Server:对此SQL语句的性能影响感到好奇

时间:2011-07-13 23:08:32

标签: sql sql-server performance select common-table-expression

我有以下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 个答案:

答案 0 :(得分:4)

这将只是内联和处理,就像你写了

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

答案 1 :(得分:1)

最有可能的,执行计划是为每行计算一次标量,然后进行汇总。对于所有匹配的值,将查询w1一次。