首页 > 解决方案 > 如何在 postgresql 中使用带有数组列的 GIN 索引?

问题描述

我有一个看起来与此类似的表:

id uuid
ancestor_ids text[]

我需要执行一个查询来检索其中的第一个元素的祖先_ids 数组中的任何输入值的行。查询看起来像这样:

select * from table where ancestor_ids[1] in ('multiple', 'input', 'values');

ancestor_ids查询工作正常,但鉴于我没有使用任何特殊运算符,我想知道向列添加索引是否会提高性能。是否可以优化查询?(表重新设计不是一种选择)

标签: sqlarrayspostgresqlquery-optimization

解决方案


如果它始终是第一个元素,则不需要 GIN 索引。标准的 B-Tree 可以:

create index on the_table ( (ancestor_ids[1]) );

推荐阅读