上一篇中,简单的说明了下 count() 与 sum() 的区别,虽然count 函数是汇总行数的,不过我汇总行数的时候经常是使用sum(1) ,那么问题来了,count(1) 与 sum(1) 那个更快?
让我们比较sum和count的性能:示例使用的是sql server 官方示例数据库
use adventureworks2014 go set statistics io on go -- use of sum -- original query select sum(case when salesorderid > 50 then 1 else 0 end) from [sales].[salesorderdetail] where productid > 750 go -- use of count -- new proposed query select count(case when salesorderid > 50 then 1 else 0 end) from [sales].[salesorderdetail] where productid > 750 go
下面是执行计划的对比图:
您可以看到执行计划完全相同且完全相同。
让我们看看统计数据的输出。
可以观察到io读取完全相同。