Arrays 如何使用带有数组关键字的Postgresql GIN索引
我想使用Arrays 如何使用带有数组关键字的Postgresql GIN索引,arrays,postgresql,indexing,Arrays,Postgresql,Indexing,我想使用数组[]表达式在标量文本列上创建GIN索引,如下所示: CREATE TABLE mytab ( scalar_column TEXT ) CREATE INDEX idx_gin ON mytab USING GIN(ARRAY[scalar_column]); Postgres在数组关键字上报告错误 稍后我将在如下查询中使用此索引: SELECT * FROM mytab WHERE ARRAY[scalar_column] <@ ARRAY['some', 'other
数组[]
表达式在标量文本列上创建GIN
索引,如下所示:
CREATE TABLE mytab (
scalar_column TEXT
)
CREATE INDEX idx_gin ON mytab USING GIN(ARRAY[scalar_column]);
Postgres在数组
关键字上报告错误
稍后我将在如下查询中使用此索引:
SELECT * FROM mytab WHERE ARRAY[scalar_column] <@ ARRAY['some', 'other', 'values'];
SELECT*FROM mytab WHERE ARRAY[scalar_column]由于语法原因,您忘记添加额外的一对括号:
CREATE INDEX idx_gin ON mytab USING gin ((ARRAY[scalar_column]));
这个指数没有多大意义。如果您需要搜索给定数组中的成员资格,请使用常规B树索引,并将=ANY
设置为scalar\u列
的值是否与值列表中的一个匹配?如果是这样的话,您可以使用一个常规的btree索引和过滤器WHERE scalar_column IN('some','other','values')
在这种情况下我应该使用哪个索引?作为一种解决方法,我使用gin(string_to_array(scalar_column'))在mytab上创建索引idx_gin代码>我想知道是否有合适的方法来创建这样一个索引。索引和您的查询一开始就没有任何意义。为什么您认为需要数组表达式的索引?我认为谢谢。请您详细说明一下这个索引的用处好吗。我想加快检查标量值是否在给定数组中的查询速度。我已经详细阐述了这一点。