可能重复:
COUNT() vs. COUNT(1) vs. COUNT(pk): which is better?
count( ) and count(column_name), what's the diff?
count(*) vs count(column-name) - which is more correct?
在select语句中使用count(*)
的好处是我可以将它与任何表一起使用,这使脚本自动化更容易:
count_sql = 'select count(*) ' + getRestOfSQL('tablename');
但是,它效率低于使用count(specific_field)
吗?
答案 0 :(得分:2)
对于InnoDB
如果specific_field
不可为空,则它们是等效的并具有相同的性能。
如果specific_field
可以为空,那么他们就不会做同样的事情。 COUNT(specific_field)
计算非空值specific_field
的行。这需要查看每行specific_field
的值。 COUNT(*)
只计算行数,在这种情况下可以更快,因为它不需要检查specific_field
的值。
对于MyISAM
以下内容有一个特殊优化,因此它甚至不需要获取所有行:
SELECT COUNT(*) FROM yourtable
答案 1 :(得分:1)