PostgreSQL の IN 演算子と ANY 演算子: どちらを選択しますか?
PostgreSQL には、値とセットを比較するために一般的に使用される IN と ANY の 2 つの構造体が用意されています。 2 つの構造の論理機能は本質的に同じですが (両方のテスト セット メンバーシップ)、構文とパフォーマンスに微妙な違いがあります。
文法のバリエーション
IN には 2 つの構文バリエーションがあります:
ANY には 2 つの文法バリエーションもあります:
ユースケース
パフォーマンスノート
一般に、IN (コレクション) と ANY (コレクション) は同様に実行され、可能な場合はインデックス スキャンを使用します。ただし、ANY (配列) は配列の順次スキャンを使用するため、大規模な配列では効率が低下する可能性があります。
= ANY (設定) との比較
IN (セット) と = ANY (セット) は論理的には同等ですが、場合によっては、異なるクエリ プランが生じる可能性があります。 IN を使用すると、PostgreSQL はコレクション用の一時テーブルを作成することになり、オーバーヘッドが増加する可能性があります。
多用途性
ANY は、さまざまな演算子 (= だけでなく) と一緒に使用できるため、IN よりも一般的です。たとえば、ANY と LIKE を使用して、パターンの一致を確認できます。
を除外します
セットにない行を検索するには、NOT (column = ANY (set)) を使用します。あるいは、この目的で ALL を使用することもできます。
NULL 値
デフォルトでは、NULL 値を持つ行は IN または ANY を介して比較されません。 NULL 値を含めるには、比較で IS NOT TRUE を使用できます。
以上がPostgreSQL の IN と ANY: どの演算子を選択する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。