繁体   English   中英

PostgresQL — GIN索引和B树的交集?

[英]PostgresQL — GIN index and intersection with B-trees?

我有两个索引:

CREATE INDEX table_a_b ON table (a, b);
CREATE INDEX table_c_gin ON table USING GIN(c);

我的查询如下所示:

SELECT * FROM table WHERE a = 'test' and b = 1 and c @> '{"test1", "test2"}'::text[];

查询计划器将输出以下内容:

 Index Scan using table_a_b on table  (cost=0.13..8.15 rows=1 width=52)
 Index Cond: (((a)::text = 'test'::text) AND (b = 1))
 Filter: (c @> '{test1, test2}'::text[])

那么,有什么办法可以使GIN索引正常工作吗? 也许有一种方法可以创建具有两种不同索引类型的复合索引?

感谢任何帮助。

如果计划者认为值得这样做,则可以对table_a_b使用位图索引扫描并汇总两个结果。 您必须查看EXPLAIN的输出,以了解为什么它不选择这样做。

如果要创建组合索引,则必须安装btree_gin扩展。 然后,您可以在GIN索引中使用textinteger列。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM