【发布时间】:2015-10-21 10:21:58
【问题描述】:
在计算 * 、任何自定义字段 ( n ) 或 MySQL 中的 primary id 时,性能或后台执行行为是否有任何差异?
* 在查询中具体指的是什么,它与其他两种方式有何不同?
SELECT COUNT( * ) FROM t;
SELECT COUNT( id ) FROM t;
SELECT COUNT( n ) FROM t;
更新:
假设id 和n 在任何记录中都不为空。
【问题讨论】:
-
Count(*) 计算所有,count(id) 只计算非空值
-
您无法真正比较返回不同结果的查询的性能:-?
-
让我们假设,主 id 在任何记录中都不为空。我想,这很正常。
-
正确。这个问题实际上与性能无关,因为提供的选项提出了两个不同的问题。如果一个表有一个 PK,那么几乎可以肯定 count(*) 将通过计算索引中的行数来实现。
-
统计所有行,也可以使用
count(1)
标签: mysql sql performance select count