我有一个包含10.000.000行的大innodb表
这个来自table_name
的查询SELECT count(id)需要4-6秒来执行
我需要减少查询执行时间
1)有人可以建议如何在不将表更改为MyIsam的情况下实现这一点吗
2)如果我们需要使用MySQL缓存,我们如何在服务器上打开它?
发布于 2014-11-04 23:14:48
在应用程序中的计数上撒谎。真的,在极少数情况下,你需要确切的数字。近似行计数(但与MyISAM中的select计数(*)一样快),您可以从
SELECT MAX(id) - MIN(id) AS count FROM table
如果您仍然需要确切的数字,则可以使用计数数字创建一个表,并使用INSERT和DELETE时的触发器对其进行更新
发布于 2014-11-04 15:20:58
如果您的表不经常更改,那么使用MySQL查询缓存是一个很好的解决方案。
[mysqld]
query_cache_type = 1
query_cache_size = 10M
如果字段'id‘不存在,也要添加索引。此外,如果您在插入或更新时在单独的表中编写应用程序商店计数。这很方便。
https://stackoverflow.com/questions/26729528
复制相似问题