4

OR クエリを使用してシステムを開発しました。

SELECT * FROM tableA 
JOIN tableB ON (idA = idB)
WHERE idA = 1 OR 
      idA = 2 OR 
      idA = 3 OR 
      idA = 4 OR 
      idA = 5 ...... OR 
      idA=100

クエリ IN と比較します。

SELECT * 
FROM tableA JOIN tableB ON (idA = idB)
WHERE idA IN (1,2,3,4,5,......,100)

MYSQL データベースで最適なクエリは何ですか?

4

4 に答える 4

13

で使用。

IN はインデックスを使用します。

ORは(私の知る限り)インデックスを使用しません。

また、この点はくしゃみではありませんが、IN バージョン:

  • 使用するコードが少ない
  • 維持しやすい
  • 理解しやすい

これらの理由だけでも、コードの品質を向上させるために少しパフォーマンスが低下することは覚悟していますが、実際にはパフォーマンスも向上します。

于 2012-12-20T02:18:16.423 に答える
4

このような場合、EXPLAIN を使用してクエリを実行し、YOUR データに対してどのように機能するかを確認する必要があります。例えば:

EXPLAIN SELECT * FROM tableA

JOIN tableB ON (idA = idB)

WHERE idA = 1 OR idA = 2 OR idA = 3 OR idA = 4 OR idA = 5 ...... OR idA=100

これにより、いくつかの統計が提供され、インデックスやシーケンシャル スキャンなどを使用しているかどうかが示されます。その結果から、ケースに最適なものを判断できます。

ただし、一般的にはINを使用します。

以前の研究では、ほぼ常に IN の方が高速であることが確認されています: MYSQL OR と IN のパフォーマンス

于 2012-12-20T02:20:10.307 に答える
0

代わりに In がある場合は、Or を使用しないでください。

クエリが非常に遅くなります

于 2012-12-20T02:47:17.503 に答える
0
SELECT * FROM tableA

JOIN tableB ON (idA = idB)

WHERE idA <= 100
于 2012-12-20T02:20:30.177 に答える