- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须对 2 个字段求和,然后再求和。从性能的角度来看,先添加字段还是在对列求和之后添加字段有什么区别?
方法 1 = SELECT SUM(columnA + columnB)
方法 2 = SELECT SUM(columnA) + SUM(columnB)
(环境 = SQL Server 2008 R2)
最佳答案
我已经检查过了,我看到的是 sum(x) + sum(y)
更快。
为什么?当您使用 sum 函数时,您正在使用聚合函数。聚合时,将跳过空值。当您在聚合函数中组合两个字段时,处理器必须检查其中一个字段是否为 NULL,因为一个集合可以包含一个值和一个 NULL。将 NULL(或 UNKNOWN 或 NOTHING,如果你喜欢)添加到某物,仍然是什么,所以 NULL。因此,对于每条记录,都必须进行检查。
当您查看执行计划并检查计算机标量运算符时,您将确切地看到这种行为。
对于 sum(x) + sum(y)
方法您会看到估计的 cpu 成本为 0,0000001,而另一种方法最多需要 0,0000041。那是更多的东西!
此外,当您仔细观察时,您会发现 sum(x + y)
将被制作成类似的东西[Expr1004] = Scalar Operator(CASE WHEN [Expr1006]=(0) THEN NULL ELSE [Expr1007] END)
所以,最终,sum(x) + sum(y)
可以考虑更快。
关于tsql - 在 TSQL 中,SUM(A + B) 与 SUM(A) + SUM(B) 之间是否存在性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13390030/
我是一名优秀的程序员,十分优秀!