我必须做两个字段的总和,然后再总结。从性能角度来看,在首先添加字段还是在总结列之后,有什么不同? 方法1 = SELECT SUM(columnA + columnB) 方法2 = SELECT SUM(columnA)+ SUM(columnB) (环境=的SQL Server 2008 R2)在TSQL中,SUM(A + B)与SUM(A)+ SUM(B)之间是否存在任何性能差异?
2
A
回答
3
我已经检查了这一点,而我看到的是, sum(x) + sum(y)
更快。 为什么?当你使用sum函数时,你正在使用一个聚合函数。在进行聚合时,空值将被跳过。当你在一个集合函数中合并两个字段时,处理器必须检查其中一个字段是否为NULL,因为一个集合可以同时包含一个值和一个NULL值。添加NULL(或UNKNOWN或任何如果你喜欢的东西),仍然没有,所以NULL。所以对于每个记录都必须进行检查。
当您查看执行计划并检查计算机标量运算符时,您会看到完全相同的行为。 对于sum(x) + sum(y)
方法,您会看到0,0000001的估计CPU成本,其中另一种方法最多需要0.0000041。这是更多的东西! 此外,当你仔细看看,你会看到sum(x + y)
将作出类似 [Expr1004] = Scalar Operator(CASE WHEN [Expr1006]=(0) THEN NULL ELSE [Expr1007] END)
所以,最终的sum(x) + sum(y)
可以考虑更快。
相关问题
- 1. numpy的:点(A,B)和(A * B)的.sum()
- 2. SUM(a * b)做什么?
- 3. 如何在SQL Server中执行sum(a)/ sum(b)查询?
- 4. * a = b和a =&b之间的差异?
- 5. MySQL SUM如果字段b =字段a
- 6. SQL:sum(unit)table a minus sum(unit)table b
- 7. 为什么有A = A +之间的差异B和A + = B
- 8. 从db中选择sum(a),sum(b,其中c = 1)在SELECT语句SQL条件
- 9. excel sum列如果值x在列A或B和A不等于B
- 10. MySQL的:单柱SUM(IF(条件A,B))与穆蒂列求和()
- 11. 当B不是NaN时A和B之间的差异
- 12. [b] [b = a,0]如何在a和b之间交换?
- 13. 测试非整数是否在范围[a,b) - 或[a,b],(a,b),(a,b)
- 14. a + = b和a = + b之间的区别是什么,a ++和++ a?
- 15. VBA-条件Sum列B到列A中值的变化
- 16. 涉及SUM,JOIN和SUM之间差异的MySQL查询
- 17. Mercurial - 差异合并存储库A-> B vs B-> A?
- 18. ruby中a = 1,b = 2和a = 1(换行符)b = 2之间的差异
- 19. 在PHP OOP中$ a =&$ b,$ a = $ b和$ a = clone $ b之间的区别OOP
- 20. ||之间的区别a = b和a = a || b在红宝石?
- 21. PHP String concatenation - “$ a $ b”vs $ a。 “”。 $ b - 性能
- 22. a = a + b和a + = b之间的区别是什么?
- 23. MySQL右加入SUM()从表B到表A的信息
- 24. (A && B)与(A和B)
- 25. 输入(a + b)** 2,输出a * a + a * b + b * a + b * b
- 26. a和b性能之间的日期
- 27. a,b = b,a + b和a = b,b = a + b在fibonacci中的区别是什么[Python]
- 28. (a不在b)与(不在b中)之间的区别。 Python
- 29. Python a,b = b,a + b
- 30. SUM时间差在后面
感谢您的答案马克。如果两列都不是NULL呢? –
我刚刚尝试过这一点,并得出了相同的结论。 sum(x)+ sum(y)更快。但是,要确保你想要的答案是好的。当你做一个和(x + y)它可以给你一个不同的答案,然后sum(x)+ sum(y)。但我想你已经想过了...... –