COUNT(*)和COUNT(table.ColumnName)之间有什么区别?
我一直认为将列名作为COUNT
的参数更快,但现在当我想到它时我真的不知道因为*
意味着功能计算行数,所以可能没有任何区别?或者也许给出一个特定的列名称甚至会减慢进程?
答案 0 :(得分:7)
这两者之间的差异不是(主要)表现。他们算不同的事情:
COUNT(*)
计算表格中的行数。
COUNT(column)
计算列中的条目 - 忽略null
值。
当然,这两者之间会有性能差异,但如果他们做了不同的事情,这是可以预期的。特别是当列允许null
- 值时,查询将花费的时间长于没有(或COUNT(*)
)的列。
答案 1 :(得分:4)
COUNT(*)
返回所有记录的计数
COUNT(table.ColumnName)
返回所有非空值的计数。
请参阅Microsoft文档:
http://technet.microsoft.com/en-us/library/ms175997.aspx
所有强>
将聚合函数应用于所有值。 ALL是默认值。
<强> DISTINCT 强>
指定COUNT返回唯一非空值的数量 值。