「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > MySQL でサブクエリを含む「IN」クエリが遅いのはなぜですか? パフォーマンスを向上させるにはどうすればよいですか?

MySQL でサブクエリを含む「IN」クエリが遅いのはなぜですか? パフォーマンスを向上させるにはどうすればよいですか?

2024 年 11 月 9 日に公開
ブラウズ:527

Why are \

MySQL のサブクエリを使用した低速な "IN" クエリ

"IN" 演算子を使用した MySQL クエリは、サブクエリが使用されると大幅なパフォーマンスの低下を引き起こす可能性があります。 「IN」句の値を取得するのは複雑です。このような場合、サブクエリの結果を明示的な値に置き換えることで、実行時間が大幅に改善されます。

この動作の原因を理解するには、MySQL が "IN" クエリが評価されるたびにサブクエリを実行することに注意することが重要です。 。この例では、em_link_data テーブルに 700 万行があり、それぞれが個別に処理されるため、多数のサブクエリ評価が行われます。一方、サブクエリを明示的な値に置き換えると、サブクエリの実行が繰り返されるため、パフォーマンスが大幅に向上します。 「IN」サブクエリの代わりに JOIN を使用すると、同様のパフォーマンス上の利点が得られ、実行プロセスがさらに最適化されます。

残念ながら、ソフトウェアの制限により、ユーザーはクエリを変更できません。このような場合は、適切なインデックスを作成して関係するテーブルを最適化するか、クエリによって処理される行数を減らす方法を検討するなど、パフォーマンスを向上させる代替方法を検討する価値があります。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3