我正在使用PostgreSQL 9.5。我有一个包含数组类型列的表。
create table test (
id serial primary key,
arr text[] not null
)
现在我想发出像
这样的查询select id from test where 'value' = any(arr)
此查询使用全扫描。我需要对其进行优化,因为桌子可能很大而且价值很高。只发生在几行上。
我尝试创建索引:
create index on test(arr);
但是postres仍然使用全扫描。
如果我将查询重写为
select id from test where array['value'] = arr;
然后它使用索引,但它是一个不同的查询。我认为它发生了,因为postgres将数组值整体索引。是否可以索引单个数组项?
据我所知,我可以创建两个具有一对多关系的表,但我需要这种结构。