-3

可能重复:
COUNT( ) vs. COUNT(1) vs. COUNT(pk):哪个更好?
count(
) 和 count(column_name),有什么区别?
count(*) vs count(column-name) - 哪个更正确?

在 select 语句中使用的好处count(*)是我可以将它与任何表一起使用,这使得自动化脚本更容易:

count_sql = 'select count(*) ' + getRestOfSQL('tablename');

但是,它是否比使用效率低count(specific_field)

4

2 回答 2

2

对于 InnoDB

如果specific_field不可为空,则它们是等效的并且具有相同的性能。

如果specific_field可以为空,则它们不会做同样的事情。COUNT(specific_field)计算具有非空值的行specific_field。这需要查看specific_field每一行的值。COUNT(*)只计算行数,在这种情况下可以更快,因为它不需要检查specific_field.

对于 MyISAM

以下内容有一个特殊的优化,因此它甚至不需要获取所有行:

SELECT COUNT(*) FROM yourtable
于 2012-08-17T19:55:02.700 回答
1

一般来说,这并不重要,因为我们返回的行数相同。

这个链接很好地涵盖了它

此链接还解释了更多,特别是 Oracle

于 2012-08-17T19:55:26.817 回答