0

最適化の問題が発生しました。次の変更が回避策として機能するようです。

前 (100 秒以上):

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

このタイプの最適化が私の場合に最適かどうかの問題は別として (私の調査では、実装するのが最も実用的であることがわかっています)、これら 2 つの形式はすべての場合に同じ結果を返すことが保証されていますか?

内部クエリには多くの JOIN が含まれている可能性がありますが、他のサブクエリや UNION は含まれていないと想定できます (つまり、単純な SELECT です)。私の場合、内部クエリはユーザー入力によって大きく異なる可能性があるため、これをクエリ フォームに関する一般的な質問として構成しています。

4

1 に答える 1

0

唯一の違いは、後者には派生クエリを使用するための追加の「ステップ」があることです。それ以外の場合、結果は同じになります。

于 2013-01-16T02:27:32.553 に答える