【问题标题】:What is the difference between COUNT(*) and COUNT(table.ColumnName)? [duplicate]COUNT(*) 和 COUNT(table.ColumnName) 有什么区别? [复制]
【发布时间】:2014-06-09 09:58:21
【问题描述】:

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

我一直以为把列名作为COUNT的参数会比较快,但现在想起来我真的不知道因为*的意思是函数计算行数,所以可能有没有区别吗?或者也许给出一个特定的列名甚至会减慢这个过程?

【问题讨论】:

标签: sql database


【解决方案1】:

这两者之间的区别不是(主要)性能。他们计算不同的东西:

COUNT(*) 计算表中的行数。

COUNT(column) 计算列中的条目 - 忽略 null 值。

当然,这两者之间会有性能差异,但如果他们做不同的事情,这是可以预料的。特别是当列允许null-values 时,查询将比不允许​​的列(或COUNT(*))花费更长的时间。

【讨论】:

    【解决方案2】:

    COUNT(*) 返回所有记录的计数

    COUNT(table.ColumnName) 返回所有非空值的计数。


    参见微软文档:

    http://technet.microsoft.com/en-us/library/ms175997.aspx

    全部

    将聚合函数应用于所有值。 ALL 是默认值。

    不同

    指定 COUNT 返回唯一非空的个数 价值观。

    【讨论】:

      猜你喜欢
      • 2015-03-03
      • 2010-09-08
      • 2011-02-22
      • 2020-03-02
      • 2020-11-10
      • 1970-01-01
      • 2010-09-08
      • 1970-01-01
      相关资源
      最近更新 更多