我想要SUM很多行.
选项A或选项B更快(或更好的做法等)?
选项A.
SELECT
[Person]
SUM([Value]) AS Total
FROM
Database
WHERE
[Value] > 0
GROUP BY
[Person]
Run Code Online (Sandbox Code Playgroud)
选项B.
SELECT
[Person]
SUM([Value]) AS Total
FROM
Database
GROUP BY
[Person]
Run Code Online (Sandbox Code Playgroud)
如果我有,对于人X:
0, 7, 0, 6, 0, 5, 0, 0, 0, 4, 0, 9, 0, 0
Run Code Online (Sandbox Code Playgroud)
选项A做:
a) Remove zeros
b) 7 + 6 + 5 + 4 + 9
Run Code Online (Sandbox Code Playgroud)
选项B确实:
a) 0 + 7 + 0 + 6 + 0 + 5 + 0 + 0 + 0 + 4 + 0 + 9 + 0 + 0
Run Code Online (Sandbox Code Playgroud)
选项A的求和较少,因为它总和的记录较少,因为我已经排除了零值的负载.但是选项B不需要WHERE子句.
任何人都知道这些中的任何一个是否比另一个明显更快/更好?或者它只是一种无关紧要的东西?
谢谢 :-)
好吧,如果你有一个与该where子句完全匹配的过滤索引,并且如果该索引删除了大量数据(如:一大块数据为零),那么绝对是第一个......如果你不这样做有这样一个索引:然后你需要根据你的具体数据进行测试,但我可能希望未经过滤的场景更快,因为它可以使用一系列技巧来做总和,如果它不需要分支等
然而,这两个例子目前在功能上并不相同(第二个包括负值,第一个不包括).