在存储过程中,我正在生成一个键数组,并希望将其与表中的键数组进行比较。比较两个数组以查看它们是否至少有一个匹配的值的最快方法是什么?
到目前为止,我们已经尝试了以下方法:
- 循环生成的键并将它们与键字段进行比较(慢)
- 在数组上使用数组操作重叠 (&&)
下面是表的定义: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
被索引。