3

https://www.postgresql.org/docs/current/static/pgtrgm.html上,解释了如何使用带有 gin_trgm_ops 选项的特殊 GIN 索引来促进三元相似性算子的性能。

CREATE INDEX trgm_idx ON test_trgm USING GIN (t gin_trgm_ops);

也有人说:

这些索引不支持相等或简单的比较运算符,因此您可能也需要一个常规的 B-tree 索引。

但是,还有 BTREE_GIN 扩展,它应该允许 GIN 索引用作 BTREE 索引的替代品。https://www.postgresql.org/docs/current/static/btree-gin.html

我的问题是:如果我安装 BTREE_GIN 扩展,可以使用 pg_trgm GIN 索引(带有 gin_trgm_ops 选项)作为 BTREE 索引的替代品吗?它是否结合了 BTREE_GIN 和 trigram GIN 索引的属性,或者连接和相等表达式等仍然需要额外的 BTREE 索引?

4

1 回答 1

3

不,如果您安装btree_gin,您可以在“基本”数据类型上创建 GIN 索引,例如integer,varchartext.

这通常是无用的,因为您可以使用这样的索引,而常规 B-tree 索引不会做得更好,但是如果您想创建一个包含具有此类数据的列的多列 GIN 索引,它非常有用类型,例如,如果您想为类似的表达式创建组合索引tscol @@ to_tsquery('big data') AND intcol = 42

于 2016-11-05T13:30:31.093 回答