mysql innodb中count如何优化?

innodb中count比较慢,如何优化?

阅读 3.5k
4 个回答

如果你不要求十分精确的话,

SHOW TABLE STATUS LIKE 'foo';

这个结果对于Inonodb只是猜测,对于MySIAM是准确值

1.可以模仿myisamcount原理,你可以单独建立一个表,专门用于统计这个表的数量,在业务层写一个事务,新增时更新这个表;
2.写一个触发器,新建一个全局变量,每次新增时,这个变量自增1,需要时,直接select这个变量即可;
3.与第一种类似,如果你的MySqlIO比较大的话,可以考虑把这个统计工作交给memcache或者redis

尽量使用存储引擎特性,例如覆盖索引,这样count统计的记录数,直接通过扫描索引便可比较快的得到结果。更高层次可以通过定期维护汇总表。月、周、日不同层次进行维护。具体看你的业务场景。

参考《高性能MySQL》中对于count的几个优化方案

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题