IN 句で複数のカラムを使用した MySQL の効率的なクエリ
MySQL では、IN 句で複数のカラムを含むテーブルをクエリするのは困難な場合があります。最適化する。地理座標 (x0、y0、x1、y1) を表す 4 つの列を含むテーブルがあり、その順序でインデックスが付けられているシナリオを考えてみましょう。
これらの列の値の組み合わせに基づいて行を効率的に取得するには、次のようにします。インデックスの活用を検討してみてはいかがでしょうか。 Oracle データベースで推奨されている IN 述語を使用する代わりに、MySQL では別のアプローチが必要です。
既存のインデックスを利用してクエリのパフォーマンスを向上させるには、ブール式を使用して IN 述語を書き換えます。目標は、値の各組み合わせを、論理演算子 (この場合は OR) で接続された個別の条件として分離することです。たとえば、IN 句:
(x0, y0, x1, y1) IN ((4, 3, 5, 6), (9, 3, 2, 1))
は次のように変更できます:
( (x0 = 4 AND y0 = 3 AND x1 = 5 AND y1 = 6) OR (x0 = 9 AND y0 = 3 AND x1 = 2 AND y1 = 1) )
入力の組み合わせを個々の条件に分割することで、MySQL はインデックスを効果的に利用して絞り込むことができます。
MySQL の新しいバージョンではオプティマイザー機能が改善されており、以前に観察されたパフォーマンスの問題が軽減される可能性があることに注意してください。推奨されるアプローチは、古いバージョンの MySQL や、インデックスの最適化が重要なシナリオに対しても、堅牢かつ効率的なソリューションを提供します。
以上がIN 句に複数の列がある MySQL クエリを最適化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。