最有效地计算大表中总行数的方法是什么?我有一个包含2300万行的表,以下查询在生产硬件上需要30秒以上:
select count(*) from tablename;
似乎MySQL必须进行表扫描,但似乎这不应该是必要的。
答案 0 :(得分:14)
如果近似值足够,您可以使用:
show table status like 'tablename'
答案 1 :(得分:3)
InnoDB中表的行数很慢。
另一方面,MyISAM将行计数作为表的属性,这使得您的查询在MyISAM上非常快。
答案 2 :(得分:0)
使用缓存查询从表
中选择SELECT SQL_CACHE count(column_name)