MySQL中的COUNT(id)与COUNT(*)

Jam*_*son 21 mysql sql count

假设表中存在主要字段"id"(如速度等),以下查询之间是否存在差异?

SELECT COUNT(id) 
  FROM table
Run Code Online (Sandbox Code Playgroud)

SELECT COUNT(*) 
  FROM table
Run Code Online (Sandbox Code Playgroud)

Pas*_*ent 19

看看www.mysqlperformanceblog.com 上的Count(*)vs Count(col),他们讨论了各种'col'类型(NOT NULL或不带索引等)的这个主题,以及MyISAM和InnoDB表.


dav*_*vek 4

我知道这个问题是关于 MySQL 的,但就其价值而言,count(*)建议使用 Oracle,这表明这个问题的答案可能取决于数据库(请参阅上面来自 BalusC 的评论)。

由于许多数据库(MS-SQL、MySQL)都有保存各种类型元数据的信息模式表,因此如果一种语法只是查找现成的值,而另一种语法是直接查找表,那么必然会存在差异。

归根结底:尝试不同的选择,看看 EXPLAIN 告诉您幕后发生了什么。