对不起,一个神秘的标题......我的问题:
我有一个 mysql 查询,最简化的形式如下所示:
SELECT * FROM table
WHERE _SOME\_CONDITIONS_
ORDER BY `id` DESC
LIMIT 50
如果没有该LIMIT
子句,查询将返回大约 50,000 行,但我只对前 50 行感兴趣。现在我意识到,因为我添加ORDER BY
了位 MySQL 必须创建一个临时表并在其中加载所有结果,然后对 50,000 个结果进行排序,然后它才能返回前 50 个结果。
当我比较这个查询和没有查询的性能时,ORDER BY
我得到了 1.8 秒和 0.02 秒的惊人差异。
鉴于这id
是自动递增的主键,我认为应该有一个优雅的解决方法来解决我的问题。有没有?