MySQL:如何有效地计算大表中的行数?

Lan*_*uhn 14 mysql

什么是最有效地计算大表中的总行数的方法?我有一个包含2300万行的表,以下查询在生产硬件上需要30秒以上:

select count(*) from tablename;
Run Code Online (Sandbox Code Playgroud)

似乎MySQL必须进行表扫描,但似乎这不应该是必要的.

tsg*_*tsg 14

如果近似值足够,您可以使用:

show table status like 'tablename'
Run Code Online (Sandbox Code Playgroud)

  • @Karolis:没有.它是SHOW TABLE STATUS [FROM database] [LIKE'pattern']. (2认同)

Emi*_*röm 3

InnoDB 中表的行计数速度很慢。

另一方面,MyISAM 将行数作为表的一个属性,这使得您在 MyISAM 上的查询非常快。