mysql在大表上的日期过滤器缓慢

时间:2015-06-24 22:26:03

标签: mysql

我有一个超过1000万条记录的大表,我已经将引擎从InnoDB更改为MyISAM,之后我在count函数上获得了更好的性能,但是在查询之下需要大约3-4秒才能运行:

简单计数:

select count(`id`) from sample_table ; 

需要大约2万秒

SELECT count(`id`) from sample_table where created_at > '2015-06-24 19:26:08'; 

大约需要3到4秒

我为created_at字段添加索引,但这无助于提高性能。

我的目标是让它最多运行1秒钟!请帮助我使它成为可能。

1 个答案:

答案 0 :(得分:2)

评论太长了。这里有几件事要尝试。

认为 MySQL将扫描索引来计算记录,而不是仅使用索引元数据来获取总记录。因此,扫描1000万条记录的索引需要3-4秒 long。

尽管它不应该有所作为,但count(*)可能会更好地优化:

SELECT count(*)
from sample_table
where created_at > '2015-06-24 19:26:08'; 

还值得尝试>=只是为了看看是否存在差异。