一尘不染

mysql计数性能

mysql

从mytable中选择count(*);
从mytable中选择count(table_id); // table_id是primary_key

这两个查询在具有1000万行的表上运行缓慢。我想知道为什么为什么从mysql保留所有insert,update和delete更新的计数器变得不容易?
有没有办法改善这个查询?我使用了说明,但并没有太大帮助。


阅读 253

收藏
2020-05-17

共1个答案

一尘不染

正如cherouvim在评论中指出的那样,它取决于存储引擎。

MyISAM 确实会保留表行的计数,并且由于MyISAM支持的唯一锁是表锁,因此可以保持准确。

InnoDB 但是支持事务,因此需要进行表扫描以对行进行计数。

http://www.mysqlperformanceblog.com/2006/12/01/count-for-innodb-
tables/

2020-05-17