优化" =任何"运算符使用索引

时间:2016-06-12 14:19:31

标签: arrays postgresql indexing

我正在使用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将数组值整体索引。是否可以索引单个数组项?

据我所知,我可以创建两个具有一对多关系的表,但我需要这种结构。

0 个答案:

没有答案