MYSQL COUNT查询的效率

时间:2011-08-08 06:10:26

标签: mysql

所以我在桌子上执行了这个查询:

EXPLAIN SELECT COUNT(*) FROM table;

并且输出中的“rows”列显示为NULL(通常它会显示查询经过的行数)...

这是否意味着COUNT命令是瞬时的,因此不需要通过任何行?

3 个答案:

答案 0 :(得分:4)

如果您的表使用MyISAM存储引擎,那么是,该查询会在固定时间内解析。行计数是表元数据的一部分,表本身不必检查。

答案 1 :(得分:0)

许多数据库引擎使用index scan来获取计数。如果您正在使用MyISAM(非常可能),它只会读取引擎索引中的数字并返回它。几乎是瞬间的。

编辑:

InnoDB does a full table scan,因此它几乎总是比使用表索引的引擎慢(除非您将查询与WHERE子句进行比较。

答案 2 :(得分:0)

来自:http://www.wikivs.com/wiki/MySQL_vs_PostgreSQL#COUNT.28.2A.29

根据您使用的引擎,我猜它是MyISAM,执行快速索引计数而不是实际计算所有行。