从mytable中选择count(*); 从mytable中选择count(table_id); // table_id是primary_key
这两个查询在具有1000万行的表上运行缓慢。我想知道为什么为什么从mysql保留所有insert,update和delete更新的计数器变得不容易? 有没有办法改善这个查询?我使用了说明,但并没有太大帮助。
正如cherouvim在评论中指出的那样,它取决于存储引擎。
MyISAM 确实会保留表行的计数,并且由于MyISAM支持的唯一锁是表锁,因此可以保持准确。
MyISAM
InnoDB 但是支持事务,因此需要进行表扫描以对行进行计数。
InnoDB
http://www.mysqlperformanceblog.com/2006/12/01/count-for-innodb- tables/