Postgresql BTREE_GIN 索引带有 gin_trgm_ops 选项?

zla*_*tko 5 postgresql gwt-gin b-tree postgresql-performance trigram

https://www.postgresql.org/docs/current/static/pgtrgm.html上,解释了如何使用带有 gin_trgm_ops 选项的特殊 GIN 索引来提高 trigram 相似性运算符的性能。

CREATE INDEX trgm_idx ON test_trgm USING GIN (t gin_trgm_ops);
Run Code Online (Sandbox Code Playgroud)

也有人说:

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

然而,还有 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 索引来进行连接和相等表达式等?

Lau*_*lbe 5

不,如果您安装了,您可以在“基本”数据类型(如、或 )btree_gin上创建 GIN 索引。integervarchartext

这通常是无用的,因为您可以使用这样的索引来完成常规 B 树索引无法做得更好的事情,但是如果您想创建包含具有此类数据的列的多列 GIN 索引,那么它非常有用类型,例如,如果您想为诸如 之类的表达式创建组合索引tscol @@ to_tsquery('big data') AND intcol = 42