在SQL中,count(*)和count(<fieldname>)</fieldname>之间存在差异

时间:2009-01-11 22:50:55

标签: sql

非常自我解释的问题。有没有理由使用其中一个?

5 个答案:

答案 0 :(得分:46)

Count(*)计算所有记录,包括空值,而Count(fieldname)不包括空值。

答案 1 :(得分:6)

选择count(*)选择任意行,select count(field)选择此字段不为空的行。

答案 2 :(得分:3)

如果你想提高表现(即成为一个完整的表演纳粹),你可能不想这样做。

示例:

SELECT COUNT(1) FROM MyTable WHERE ...

答案 3 :(得分:1)

这也困扰了我一段时间。

在MySQL中,至少COUNT(*)计算行中每个(*)值不为空的行数。只需COUNT一列就会计算该列不为空的行数。

就使用单列的性能而言,会稍快一些,

答案 4 :(得分:-1)

如果表类型是没有WHERE语句的MyISAM,则

count(*)会更快。使用WHERE,MyISAM和InnoDB的速度将相同。