【发布时间】:2021-07-05 21:03:24
【问题描述】:
我想使用ARRAY[] 表达式在标量文本列上创建GIN 索引,如下所示:
CREATE TABLE mytab (
scalar_column TEXT
)
CREATE INDEX idx_gin ON mytab USING GIN(ARRAY[scalar_column]);
Postgres 报告ARRAY 关键字错误。
我稍后会在这样的查询中使用这个索引:
SELECT * FROM mytab WHERE ARRAY[scalar_column] <@ ARRAY['some', 'other', 'values'];
如何创建这样的索引?
【问题讨论】:
-
您是否只是想检查
scalar_column的值是否与值列表之一匹配?如果是这样,您可以使用常规 btree 索引并过滤WHERE scalar_column IN ('some', 'other', 'values') -
在这种情况下我应该使用哪个索引?
-
作为一种解决方法,我已经这样做了
CREATE INDEX idx_gin ON mytab USING GIN(string_to_array(scalar_column, ''));我想知道是否有适当的方法来创建这样的索引。 -
索引和您的查询一开始没有任何意义。为什么你认为你需要一个数组表达式的索引?
-
我认为带有 GIN 索引的
<@运算符比没有索引的= ANY运算符快。您将如何加快针对给定数组检查值的查询?
标签: arrays postgresql indexing