Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何使用带有数组关键字的Postgresql GIN索引_Arrays_Postgresql_Indexing - Fatal编程技术网

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我想知道是否有合适的方法来创建这样一个索引。索引和您的查询一开始就没有任何意义。为什么您认为需要数组表达式的索引?我认为
谢谢。请您详细说明一下这个索引的用处好吗。我想加快检查标量值是否在给定数组中的查询速度。我已经详细阐述了这一点。