COUNT(*)和COUNT(table.ColumnName)之间有什么区别?

时间:2014-04-24 08:15:43

标签: sql database

COUNT(*)和COUNT(table.ColumnName)之间有什么区别?

我一直认为将列名作为COUNT的参数更快,但现在当我想到它时我真的不知道因为*意味着功能计算行数,所以可能没有任何区别?或者也许给出一个特定的列名称甚至会减慢进程?

2 个答案:

答案 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返回唯一非空值的数量   值。