我遇到了一个优化问题,以下更改似乎可以作为一种解决方法:
之前(100+s):
SELECT t1.*,t2.a AS t2_a,t2.b AS t2_b FROM ... JOIN ... WHERE ... GROUP BY ... ORDER BY ... LIMIT 5
之后(0.01 秒):
SELECT * FROM
(SELECT t1.*,t2.a AS t2_a,t2.b AS t2_b FROM ... JOIN ... WHERE ... GROUP BY ... ORDER BY ...) AS x
LIMIT 5
抛开这种类型的优化是否最适合我的情况的问题(我的研究告诉我它对我来说是最实用的),这两种形式是否保证在所有情况下都返回相同的结果?
我们可以假设内部查询可能有许多 JOIN,但没有其他子查询或 UNION(即是一个简单的 SELECT)。在我的情况下,内部查询可能会因用户输入而有很大差异,所以这就是为什么我将其构建为关于查询表单的一般问题。