【问题标题】:Which is faster: COUNT(DISTINCT Column) vs. COUNT(*) ... GROUP BY Column [closed]哪个更快: COUNT(DISTINCT Column) vs. COUNT(*) ... GROUP BY Column [关闭]
【发布时间】:2012-12-24 03:17:49
【问题描述】:

我正在使用 MySQL,并且我多次读到 COUNT(*) 通常比 COUNT(Column) 快。

但是,我需要获得 distinct 行的 COUNT。据我了解,我可以通过两种不同的方式做到这一点:

a) SELECT COUNT(DISTINCT Column) ...

b) SELECT COUNT(*) ... GROUP BY Column

一般来说,哪个更快?如果它依赖,那么它依赖于什么

【问题讨论】:

  • 我相信你应该看看SQL_CALC_FOUND_ROWS 并停止使用COUNT(),除非真的需要。
  • @nawfal 我很惊讶。但请记住,这是 2008 年的问题……事情可能会发生很大变化。并且始终使用 SQL_NO_CACHE 进行基准测试
  • @Peter 确认答案的评论来自 2012 年 7 月 11 日。

标签: mysql count distinct


【解决方案1】:

SELECT COUNT(*) FROM table GROUP BY column 返回按列分组的每个值的行数,而不是组数。

SELECT COUNT(DISTINCT column) FROM table 返回组的数量(尽管您也可以使用 GROUP BY 查询中的行数来获取此信息)。

【讨论】:

  • 您能否提供一个示例来说明这两者之间的区别,因为这些描述对于像我这样的非专家来说有些混乱。谢谢!
  • @Programmer 如果SELECT column FROM table 返回5, 6, 5, 7, 5, 6, 5,则SELECT COUNT(*) FROM table GROUP BY column 返回4, 2, 1(或其变体),而SELECT COUNT(DISTINCT column) FROM table 返回3
猜你喜欢
  • 2011-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-27
  • 2019-07-07
相关资源
最近更新 更多