当我在写带有COUNT
函数的SQL语句时,有两个选择。
SELECT COUNT(*) FROM <table_name>
SELECT COUNT(some_column_name) FROM <table_name>
就性能而言,哪种SQL语句最优? 使用第一种选项,我能获得一些性能提升吗?
当我在写带有COUNT
函数的SQL语句时,有两个选择。
SELECT COUNT(*) FROM <table_name>
SELECT COUNT(some_column_name) FROM <table_name>
就性能而言,哪种SQL语句最优? 使用第一种选项,我能获得一些性能提升吗?
性能应该不重要,因为它们执行2个不同的聚合函数
COUNT(*)
是所有行,包括 NULL 值COUNT(some_column_name)
,排除了 "some_column_name
" 中的 NULL 值查看 "Count(*) vs Count(1)" 问题了解更多信息
选项2实际上计算的是所有字段中some_column_name
不为空的记录数。选项1计算的是任何字段不为空的记录数。因此,这两个查询可能会得到不同的结果。大多数情况下,您实际上想要计算所有行,最快的选项是不检查任何字段,只需使用SELECT COUNT(1) FROM ...
不,Sql Server 中没有性能提升。