行うことの違いは何でしょうか:
SELECT person FROM population WHERE id = 1 or id = 2 or id = 3
と -
SELECT person FROM population WHERE id IN (1,2,3)
それらはまったく同じ方法で実行されますか?どのような違いがありますか?IN
複数のを使用するのではなく、1つを使用する理由はあります=
か?
いいえ、同じことを実行します。はIN
クエリ文字列を最小化します。それで全部です。このようなステートメントは、クエリの最適化に役立ちます。
これら2つの比較演算子の違いの1つは、単一の値をとる「=」または「<>」とは異なり、IN
aの値を使用して比較することです。SET
マニュアルによると:
exprがINリストのいずれかの値と等しい場合、それ以外の場合は0を返します。すべての値が定数の場合、 exprのタイプに従って評価され、ソートされます。次に、アイテムの検索は、バイナリ検索を使用して実行されます。これは、IN値リストが完全に定数で構成されている場合、INが非常に高速であることを意味します。