我有一个超过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秒钟!请帮助我使它成为可能。
答案 0 :(得分:2)
评论太长了。这里有几件事要尝试。
我认为 MySQL将扫描索引来计算记录,而不是仅使用索引元数据来获取总记录。因此,扫描1000万条记录的索引需要3-4秒 long。
尽管它不应该有所作为,但count(*)
可能会更好地优化:
SELECT count(*)
from sample_table
where created_at > '2015-06-24 19:26:08';
还值得尝试>=
只是为了看看是否存在差异。