そのクエリの記述方法は次のとおりです。
SELECT * FROM member_copy WHERE id IN (17579, 17580, 17582);
ただし、本当の問題は、どこにあるかです。 idのリストはどこから来たのですか? idのリストが別のデータベースクエリの結果である場合は、代わりに副選択または結合を実行する必要があります。
コメント
EXPLAIN ANALYZE VERBOSEは、@ 200_success の回答にid IN (...)が含まれるフォームが内部的に次のように変換されることを示します。 p>
SELECT * FROM member_copy WHERE id = ANY ("{17579, 17580, 17582}");
..したがって、最初は少し速く実行されます(変換は必要ありません)。
また、質問のフォームは効果的に実行されます似ている。
大きなリストの場合、配列のネストを解除し、その後にJOINを続けると一般的に高速になります:
SELECT m.* FROM unnest("{17579, 17580, 17582}"::int[]) id JOIN member_copy m USING (id);
リストはis the result of another database queryであるため、両方を1つにまとめるのが最も高速です JOINを使用したクエリ。
詳細な説明: