我是一个包含10.000.000行的大型innodb表
此查询
SELECT count(id)FROM table_name
需要4-6秒才能执行
我需要减少查询执行时间
1)有人可以建议如何在不将表更改为MyIsam
的情况下实现此目的2)如果我们需要使用MySQL缓存,我们如何在服务器上打开它?
答案 0 :(得分:3)
说谎申请中的计数。真的,在极少数情况下你需要确切的数字。 您可以从
获得近似行数(但与MyISAM中的选择计数(*)一样快)SELECT MAX(id) - MIN(id) AS count FROM table
如果您仍然需要确切的数字,您可以使用计数编号创建一个表,并使用触发器ON INSERT和ON DELETE更新它
答案 1 :(得分:0)
如果您的表不经常更改,使用MySQL查询缓存是一个很好的解决方案。
[mysqld]
query_cache_type = 1
query_cache_size = 10M
还要在字段&id; id'上添加索引。如果它不存在此外,如果您在插入或更新时在单独的表中编写应用程序存储计数。它很方便。