请教ISNULL函数

leon51 2018-11-14 11:05:27
我使用以下语句统计订单总数时速度非常快,
SELECT SUM(订单数量) FROM tbl


但是。我想当结果为null时将其设置为0,增加了isnull函数后速度下降得非常厉害,请问这种写法是否正确?应该如何优化?
SELECT ISNULL(SUM(订单数量)) FROM tbl
...全文
287 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
吉普赛的歌 版主 2018-11-14
  • 打赏
  • 举报
回复
引用 4 楼 leon51 的回复:
[quote=引用 1 楼 yenange 的回复:] 不太可能有那么大的差别, 你 分别 贴出两个语句的 执行计划。
刚试了下,又差不多,可能是那时服务器比较忙[/quote] 嗯, 服务器与测试环境不同, 不是静态的。 上服务器查询 , 尽量加 with(nolock), 避免阻塞:

SELECT ISNULL(SUM(订单数量),0) FROM tbl with(nolock)
leon51 2018-11-14
  • 打赏
  • 举报
回复
引用 1 楼 yenange 的回复:
不太可能有那么大的差别, 你 分别 贴出两个语句的 执行计划。
刚试了下,又差不多,可能是那时服务器比较忙
二月十六 版主 2018-11-14
  • 打赏
  • 举报
回复
楼主这个语句不报错?isnull需要两个参数。
ISNULL这个操作只对最后结果做处理应该不会太影响性能,楼主可以这样试试


SELECT
ISNULL(订单数量, 0)
FROM
(
SELECT
SUM(订单数量) AS 订单数量
FROM
tbl
) t;

leon51 2018-11-14
  • 打赏
  • 举报
回复
引用 1 楼 yenange 的回复:
不太可能有那么大的差别, 你 分别 贴出两个语句的 执行计划。
不好意思,第二句写错了,应该是
SELECT ISNULL(SUM(订单数量),0) FROM tbl
吉普赛的歌 版主 2018-11-14
  • 打赏
  • 举报
回复
不太可能有那么大的差别, 你 分别 贴出两个语句的 执行计划。
leon51 2018-11-14
  • 打赏
  • 举报
回复
引用
上服务器查询 , 尽量加 with(nolock), 避免阻塞:
感谢你的提醒

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧