簡體   English   中英

這兩種MySQL查詢形式是否總是等效的? GROUP BY + ORDER BY + LIMIT

[英]Are these two MySQL query forms always equivalent? GROUP BY + ORDER BY + LIMIT

我遇到了優化問題,以下更改似乎可以解決:

之前(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)。 就我而言,內部查詢可能會因用戶輸入而有很大不同,因此這就是為什么我將其構造為關於查詢表單的一般問題。

唯一的區別是后者將使用派生查詢具有額外的“步驟”。 否則,結果將相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM