OR
対 IN
オペレーター パフォーマンス ベンチマークデータベースの最適化ではパフォーマンスが非常に重要です。レコードをフィルタリングする場合、OR
と IN
演算子の選択はパフォーマンスに大きな影響を与える可能性があります。この記事では、MySQL におけるこれら 2 つの演算子のパフォーマンスの違いについて説明します。
SQL クエリでは、OR
演算子は複数の条件を組み合わせて複合ブール式を作成し、IN
演算子はフィールド値を指定された値のセットと比較します。 MySQL も同様の方法でこれらのクエリを最適化していると推測する人もいますが、真実は不明です。
この質問に答えるために、私たちは実証的なベンチマークを実施しました。 OR
クエリと IN
クエリは両方とも、ユーザー ID を含むテーブルに対して実行されます。一貫性を確保するために、クエリは 1000 回の反復ループでテストされました。
クエリ構造:
<code class="language-sql">-- OR 查询 SELECT ... FROM ... WHERE someFIELD = 1 OR someFIELD = 2 OR someFIELD = 3 ... -- IN 查询 SELECT ... FROM ... WHERE someFIELD IN (1, 2, 3, 4)</code>
ベンチマーク結果:
の結果は、IN
演算子のパフォーマンスが OR
演算子よりもはるかに優れていることを明確に示しています。
<code>| 运算符 | 时间 (秒) | |---|---| | IN | 2.1595389842987 | | OR | 3.0078368186951 |</code>
演算子の効率を際立たせます。 MySQL は、IN
クエリ用に最適化されたデータ構造を使用しており、IN
演算子と比較して高速に実行されます。 OR
演算子よりも IN
演算子を優先する必要があります。 OR
以上がMySQL OR と IN: どちらの演算子がより優れたクエリ パフォーマンスを提供しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。