带有 gin_trgm_ops 选项的 Postgresql BTREE_GIN 索引?
Postgresql BTREE_GIN index with gin_trgm_ops option?
在 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);
也有人说:
These indexes do not support equality nor simple comparison operators,
so you may need a regular B-tree index too.
但是,还有 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 索引来连接和相等表达式等?
不,如果您安装 btree_gin
,您可以在“基本”数据类型上创建 GIN 索引,例如 integer
、varchar
或 text
。
这通常是无用的,因为您可以使用这样的索引来做常规 B 树索引不能做得更好的事情,但是如果您想创建一个包含具有此类数据类型的列,例如,如果您要为 tscol @@ to_tsquery('big data') AND intcol = 42
.
等表达式创建组合索引
在 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);
也有人说:
These indexes do not support equality nor simple comparison operators, so you may need a regular B-tree index too.
但是,还有 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 索引来连接和相等表达式等?
不,如果您安装 btree_gin
,您可以在“基本”数据类型上创建 GIN 索引,例如 integer
、varchar
或 text
。
这通常是无用的,因为您可以使用这样的索引来做常规 B 树索引不能做得更好的事情,但是如果您想创建一个包含具有此类数据类型的列,例如,如果您要为 tscol @@ to_tsquery('big data') AND intcol = 42
.