Ari*_*MAZ 17 sql-server performance
我正试图通过SP的性能.我对SUM和ISNULL有一个疑问.当我总结一列时,我应该使用ISNULL吗?没有ISNULL使用SUM()是安全的吗?我的例子如下
SUM(ISNULL(COL1,0))
Run Code Online (Sandbox Code Playgroud)
由于ISNULL成本很高,我打算在没有ISNULL的情况下使用SUM,如下所示
SUM(COL1)
Run Code Online (Sandbox Code Playgroud)
我做了一些小测试,但我看不到结果
San*_*mar 15
是的,它的安全.您可以使用Sum而不处理NULL值.你也可以检查一下.
你也可以这样使用.
ISNULL(SUM(COL1),0).
返回表达式中所有值或仅DISTINCT值的总和.SUM只能与数字列一起使用.空值被忽略.
供参考:https://msdn.microsoft.com/en-IN/library/ms187810.aspx
小智 6
在执行 SUM 时不强制使用 NULL 和 COALESCE,因为 SUM 总是忽略空值。
请参阅链接:https : //msdn.microsoft.com/en-IN/library/ms187810.aspx了解更多信息。
更新
如果在4列中有[1、2,NULL,5],则输出将为8。
但是,在许多情况下,不检查NULL而使用SUM()是不安全的。
如果给定子句没有匹配的内容,则可以接收null。而且,如果您在另一个函数中使用此SUMMED值,则可能需要关注。
此处有更多详细信息:https : //msdn.microsoft.com/zh-CN/library/ms187810.aspx
请同时查看COALESCE方法 https://msdn.microsoft.com/en-IN/library/ms190349.aspx
PS:也请查看此帖子- 我的选择SUM查询返回null。它应该返回0
这是3张图片,它们显示不检查NULL就会返回NULL而不是0。
没有ISNULL CHECK的SUM
| 归档时间: |
|
| 查看次数: |
20164 次 |
| 最近记录: |