Daw*_*wan 5 performance sql-server sql-server-2012 query-performance
数据库管理系统:SQL Server 2012 Express
我有一个看起来像这样的 SQL 语句:
SELECT
OverSpeedings = SUM(OverSpeeding),
OverspeedingPoints = SUM(OverSpeeding) * 5,
FROM
MyTable
GROUP BY
COLUMNS_HERE
Run Code Online (Sandbox Code Playgroud)
我想知道两次添加同一列是否会影响性能?意思是 SQL Server 两次添加列吗?或者它会添加一次列并用于结果集中的两列?
或者我应该使用具有SUM
以下内容的 CTE :
SELECT
OverSpeedings,
OverspeedingPoints = OverSpeedings * 5,
FROM
(
SELECT
OverSpeedings = SUM(OverSpeeding)
FROM
MyTable
GROUP BY
COLUMNS_HERE
) A
Run Code Online (Sandbox Code Playgroud)
想知道两次添加同一列是否会影响性能?意思是 SQL Server 两次添加列吗?或者它会添加一次列并用于结果集中的两列?
总和将计算一次,结果用于引用相同的多列 sum
下面是来自我的实例的示例设置,这将证明相同
select
sum(empid) as empidsum,
sum(empid)*2 as empidsum,
sum(empid)*4 as empid4
from orders
Run Code Online (Sandbox Code Playgroud)
在上面的执行计划中,突出显示的计算标量如下所示
Scalar Operator([Expr1003]*(2))
Scalar Operator([Expr1003]*(4))
Run Code Online (Sandbox Code Playgroud)
Expr1003
先前计算标量计算的总和在哪里
我应该使用带有一个 SUM 的 CTE,如下所示
CTE 只是为了可读性,使用 CTE 对性能没有帮助。
在某些情况下,实现 CTE 将有助于改进查询。有关更多详细信息,请查看此答案: