遅いものから速いものの大まかな順序:
- 200個の個別のクエリ。それぞれが独自のトランザクションに含まれます
- 200個の個別のクエリをすべて1つのトランザクションで
-
WHERE ... IN (...)を使用した1つの大きなクエリ またはWHERE EXISTS (SELECT ...) -
INNER JOINを使用した1つの大きなクエリVALUESを介して 条項 - (値のリストが非常に大きい場合にのみ高速):
COPY一時テーブルへの値リスト、インデックス付け、およびJOIN一時テーブルにあります。
何百もの値を使用している場合は、VALUESを介して参加することをお勧めします 句。何千もの値の場合、COPY 一時テーブルにインデックスを付けてインデックスを付け、結合します。
値句で結合する例。このINを考えると クエリ:
SELECT *
FROM mytable
WHERE somevalue IN (1, 2, 3, 4, 5);
VALUESと同等 は:
SELECT *
FROM mytable
INNER JOIN (
VALUES (1), (2), (3), (4), (5)
) vals(v)
ON (somevalue = v);
ただし、VALUESを使用することに注意してください この方法はPostgreSQLの拡張機能であり、IN 、または一時テーブルの使用はSQL標準です。
この関連する質問を参照してください: