PostgreSQL の IN 演算子と ANY 演算子の比較
概要
PostgreSQL は、セットまたはリストに対して値を照合するために、IN と ANY という 2 つの類似した構造を提供します。これらの論理機能は同じですが、構文と使用法には大きな違いがあります。
構文と一致
IN:
いずれか:
マッチングを設定します
IN と ANY は、セットに対して値を照合する場合と同等です。例:
<code class="language-sql">SELECT * FROM table WHERE id IN (1, 2, 3); SELECT * FROM table WHERE id = ANY('{1, 2, 3}');</code>
配列のマッチング
ただし、配列 マッチングをサポートする ANY の追加の構文バリアントがあります。これにより、値を実際の配列データ型と比較できるようになります:
<code class="language-sql">SELECT * FROM table WHERE id = ANY(ARRAY[1, 2, 3]);</code>
クエリの最適化
場合によっては、IN と ANY の選択がクエリの最適化に影響します。大規模なコレクションの場合、IN 構造体を使用してコレクションを渡すと、パフォーマンスが向上する可能性があります。
ANY のその他の機能
例
これらの違いを示すために、次の例を考えてみましょう:
<code class="language-sql">SELECT * FROM table WHERE id IN ('1', '2', NULL, 3); SELECT * FROM table WHERE id = ANY('{1, 2, NULL, 3}');</code>
IN 式では NULL 値を含む行が除外されますが、ANY 式では NULL 値が含まれます。さらに、ANY 式では、id > ANY('{1, 2, 3}') などの配列固有の演算子を使用できます。
以上がPostgreSQL の IN と ANY: 各演算子をいつ使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。