ストアド プロシージャで、キーの配列を生成しており、それをテーブルのキーの配列と比較したいと考えています。2 つの配列を比較して、両方に一致する値が少なくとも 1 つあるかどうかを確認する最も速い方法は何ですか?
これまでのところ、次のことを試しました。
- 生成されたキーをループし、キー フィールドと比較します (遅い)。
- 配列で配列操作オーバーラップ (&&) を使用する
テーブルの定義は次のとおりです。solicitation
id bigint NOT NULL DEFAULT nextval('id_seq'::regclass),
type_id bigint,
name character varying(2000),
key character varying[],
status bigint
ストアド プロシージャのサンプル コード
-- keys = list of generated keys
FOR _id, _name, _type IN
SELECT rec.eid, rec.domain, rec.name, rec.type_id
from solicitation rec
where rec.key && _keys
and rec.status in (1201, 1202, 1241)
LOOP
...
END LOOP;
key
インデックスされています。