2013-05-31 20 views
7

2つのクエリのUNION ALLを含むクエリを最適化しています。 両方のクエリが最適化され、1秒未満で別々に実行されています。 しかし、両方の和集合を実行すると、すべてを計算するのに約30秒かかります。UNION ALLでMYSQLのパフォーマンスを向上させるには?

私は彼らが得るよう、それらが最適化されているため、特定のクエリでお邪魔、だから、Optimized_Query_1から行のOptimized_Query_1Optimized_Query_2

数の約100K

数であるのは、それらを呼び出すことはできませんOptimized_Query_2から行がおよそ200K

SELECT * FROM (
    Optimized_Query_1 
UNION ALL 
    Optimized_Query_2 
) U 
ORDER BY START_TIME ASC 

である私はTEH RESUのために必要ですltsは順番に並んでいますが、最後にORDER BYの有無にかかわらずクエリに時間がかかりますので、違いがないはずです。

明らかに、UNION ALLは最終的な結果が与えられた場所から、一時的なテーブルをメモリに作成しますが、これを回避する方法はありますか?

おかげ

答えて

2

あなたはUNION ALLを最適化することはできません。これは、単に2つの結果セットを互いに積み重ねるだけです。重複を除去するために余分なステップが必要なUNIONと比較すると、UNION ALLは2つの結果セットの直線的な積み重ねです。 ORDER BYには時間がかかる可能性があります。

VIEWをこのクエリから作成できます。

+0

ORDER BYを削除した場合、クエリを計算する合計時間は同じくらい時間がかかります。 VIEWの作成にはどのように役立つでしょうか? – jonasMcFerreira

+0

@jonasMcFerreira [このディスカッション](http://dev.mysql.com/doc/refman/5.5/en/create-view.html#c9063)を見てください。 – Kermit

関連する問題