1

行うことの違いは何でしょうか:

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つを使用する理由はあります=か?

4

1 に答える 1

3

いいえ、同じことを実行します。はINクエリ文字列を最小化します。それで全部です。このようなステートメントは、クエリの最適化に役立ちます。

これら2つの比較演算子の違いの1つは、単一の値をとる「=」または「<>」とは異なり、INaの値を使用して比較することです。SET


マニュアルによると:

exprがINリストのいずれかの値と等しい場合、それ以外の場合は0を返します。すべての値が定数の場合、 exprのタイプに従って評価され、ソートされます。次に、アイテムの検索は、バイナリ検索を使用して実行されます。これは、IN値リストが完全に定数で構成されている場合、INが非常に高速であることを意味します。

于 2012-05-27T06:21:47.573 に答える