我想在过去30天内显示一张表有多少条记录的图表。我将做一个rake任务,我将每天从一个cron工作。
我刚做了一个测试,我发现了一个奇怪的“问题”。 我在Rails控制台中运行了这段代码:
SeenEpisode.count
#=> (57135.2ms) SELECT COUNT(*) FROM `seen_episodes`
然后我在MySQL控制台中对此进行了测试:
use my_database;
SELECT COUNT(*) FROM seen_episodes;
1 row in set (3.94 sec)
此表有2100万条记录。
我在生产服务器上运行了两个测试,以获得真实的性能数据。
其他表有大约500k记录,在Rails控制台中占用80-300ms。
为什么在Rails中对21m大表进行计数(使用相同的查询)比在MySQL控制台中花费的时间长得多?
答案 0 :(得分:1)
我猜你会在INNODB上,其中count(*)没有被缓存。