ホームページ >データベース >mysql チュートリアル >PostgreSQL の WHERE 句では IN または ANY を使用する必要がありますか?
WHERE 句で IN
の代わりに ANY を使用します従来の IN 句に加えて、ANY を使用して WHERE 句の結果をフィルタリングすることを検討できます。 PostgreSQL には 2 つの構文バリエーションがあります:
IN 式:
任意の式:
どちらのメソッドでもサブクエリを使用できますが、2 番目の形式では期待される内容が異なります。
次の点を考慮してください:
パフォーマンスの点では、ANY が IN より大幅に高速である可能性は低いです。この 2 つのどちらを選択するかは、主に、フィルター処理された値を提供する利便性に依存します。
サブクエリメソッド:
フィルター値がデータベースにすでに存在する場合は、サブクエリを使用するか、ソーステーブルをターゲットテーブルに結合することで効率が向上します。
配列メソッド:
最高のパフォーマンスを得るには、配列、unnest() または join を介してクライアントから大きな数値を指定するか、VALUES を使用してテーブル式を指定します。
= 任意の構文:
配列式の場合、PostgreSQL は配列コンストラクター (ARRAY[1,2,3]) または配列リテラル ('{1,2,3}') を受け入れます。型安全性を確保するために、明示的な型変換を使用できます:
<code class="language-sql">ARRAY[1,2,3]::numeric[] '{1,2,3}'::bigint[]</code>
Ruby から配列を渡す:
Ruby から配列を渡すには、次の構文を使用します:
<code class="language-ruby">MyModel.where('id = ANY(ARRAY[?]::int[])', ids.map { |i| i})</code>
以上がPostgreSQL の WHERE 句では IN または ANY を使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。