Mysql 哪个更快:计数(不同列)与计数(*)。。。按列分组
我使用的是MySQL,我已经读过好几次了,Mysql 哪个更快:计数(不同列)与计数(*)。。。按列分组,mysql,count,distinct,Mysql,Count,Distinct,我使用的是MySQL,我已经读过好几次了,COUNT(*)通常比COUNT(Column)快 但是,我需要获得计数的不同的行。据我所知,我可以用两种不同的方式来实现这一点: a)选择计数(不同列). 或 b)选择计数(*)。。。按列分组 一般来说,哪个速度更快?如果它取决于,那么它取决于什么?SELECT COUNT(*)FROM table GROUP BY column返回按列分组的每个值的行数,而不是组数 SELECT COUNT(DISTINCT column)FROM table返回组
COUNT(*)
通常比COUNT(Column)
快
但是,我需要获得计数的不同的行。据我所知,我可以用两种不同的方式来实现这一点:
a)选择计数(不同列).
或
b)选择计数(*)。。。按列分组
一般来说,哪个速度更快?如果它取决于,那么它取决于什么?SELECT COUNT(*)FROM table GROUP BY column
返回按列分组的每个值的行数,而不是组数
SELECT COUNT(DISTINCT column)FROM table
返回组数(尽管您也可以使用groupby
查询中的行数来获得此值)。我认为您应该查看SQL\u CALC\u FOUND\u ROWS
并停止使用COUNT()
,除非确实需要。@Peter。看@nawfal,我很惊讶。但请记住,这是2008年的一个问题。。。事情本来可以改变很多。并始终使用SQL\u NO\u缓存benchmarking@Peter确认答案的评论来自2012年7月11日。你能提供一个例子说明这两者之间的区别吗,因为对于像我这样的非专家来说,这些描述有些让人困惑。谢谢@程序员如果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
。