-1

私はずっと前に開発したこの大きな MySQL クエリを持っています。完璧にはほど遠いので、最適化する時が来ました。どこから始めればよいかさえわかりません。関連するテーブルにインデックスを追加することはできますか? または、クエリをサブクエリに分割し、それらをビューとして保存し、それらのビューを使用して結果を再構築しますか? そのような仕事をどのように処理するか教えてください。

クエリへのリンク: http://pastebin.com/sVvW8PCc

使用した MySQL バージョン: 5.0.96

現在、読み込みに 6.5 秒ほどかかっていますが、この時間を 2 秒以下に短縮したいと考えています。

前もって感謝します!

4

1 に答える 1

0

インデックスがない場合は、最初にそれを行います。

ワイルドカードを変更するだけで、各 UNION で同じクエリを使用しているように見えます (つまり、結合はすべて同じで、ワイルドカードのみが異なります)。 WIND) が可能な限り効率的に実行されていることを確認します。その後、変更を他の人に複製できます。

(前のステートメントが true の場合)句でCASEステートメントを使用して、UNION クエリを 1 つに結合できるのではないかと思います。SELECT(GROUP BYも使用する必要があります)

多くの場合、MAX(d_updated) を決定します。MySQL がその結果をキャッシュするのか、それとも毎回判断しようとするのかはわかりません。このクエリを実行する前に一度その値を決定し、それをハードコードされた値としてクエリに送り返してみませんか?

最後に、パフォーマンスのためではなく、読みやすさのためにビューを使用することをお勧めします。

于 2013-10-30T16:06:23.863 に答える