MySQL のサブクエリを使用した遅い "IN" クエリ
"IN" 演算子を使用する MySQL クエリは、サブクエリが使用されると大幅なパフォーマンスの低下を引き起こす可能性があります「IN」句の値を取得するのは複雑です。このような場合、サブクエリの結果を明示的な値に置き換えることで、実行時間が大幅に改善されます。
この動作の原因を理解するには、MySQL が "IN" クエリが評価されるたびにサブクエリを実行することに注意することが重要です。 。この例では、em_link_data テーブルに 700 万行があり、それぞれが個別に処理されるため、多数のサブクエリ評価が行われます。
一方、サブクエリを明示的な値に置き換えると、サブクエリの実行が繰り返されるため、パフォーマンスが大幅に向上します。 「IN」サブクエリの代わりに JOIN を使用すると、同様のパフォーマンス上の利点が得られ、実行プロセスがさらに最適化されます。
残念ながら、ソフトウェアの制限により、ユーザーはクエリを変更できません。このような場合は、適切なインデックスを作成して関係するテーブルを最適化するか、クエリによって処理される行数を減らす方法を検討するなど、パフォーマンスを向上させる代替方法を検討する価値があります。
以上がMySQL でサブクエリを含む「IN」クエリが遅いのはなぜですか? パフォーマンスを向上させるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。