可能重复:
Why does MYSQL higher LIMIT offset slow the query down?
我的另一个帖子由于它是重复的而被关闭了,但副本,根本没有帮助我,所以我也没有看到关闭这个的原因!
我有一个页面,我希望按照每个帖子的投票数量从上到下对帖子进行排序。
我有数百万条记录,查询速度非常慢。得到结果需要很短的时间。
这很好:
SELECT `id` FROM `table` ORDER BY `votes` LIMIT 0,20;
这需要很长时间:
SELECT `id` FROM `table` ORDER BY `votes` LIMIT 100000,20;
我甚至没有谈论将它设置为1,000,000甚至更多。
关于如何加快速度的任何想法? 我尝试使用Why does MYSQL higher LIMIT offset slow the query down?中的代码 但它也没有帮助。 你们有什么建议我可以达到相同的结果,但也许使用PHP?还是一些更好的查询?
答案 0 :(得分:2)
此查询的问题在于它首先需要找到前100000的内容,然后才能获取100000-1000020。
在我们的案例中,我们处理的是图库和页面,我们只是在x页面后阻止了访问;从而完全避免了这个问题。
如果您还没有votes
的索引,请从那里开始;但我猜你已经做过了(我希望如此!)。您还可以选择其他一些标准吗?你可以改为降序吗?还有其他方法可以将行数从100000减少到更低的值吗?
如果一切都失败了,你将不得不寻找其他解决方案;您可能需要对从该查询返回的内容进行非规范化和预生成。也许你需要缓存所有结果并运行一个预热脚本。
希望这会对你有所帮助..