innodb中count比较慢,如何优化?
1.可以模仿myisam
的count
原理,你可以单独建立一个表,专门用于统计这个表的数量,在业务层写一个事务,新增时更新这个表;
2.写一个触发器,新建一个全局变量,每次新增时,这个变量自增1,需要时,直接select
这个变量即可;
3.与第一种类似,如果你的MySql
IO比较大的话,可以考虑把这个统计工作交给memcache
或者redis
。
尽量使用存储引擎特性,例如覆盖索引,这样count统计的记录数,直接通过扫描索引便可比较快的得到结果。更高层次可以通过定期维护汇总表。月、周、日不同层次进行维护。具体看你的业务场景。
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
如果你不要求十分精确的话,
这个结果对于Inonodb只是猜测,对于MySIAM是准确值