Postgresql BTREE_GIN индекс с опцией gin_trgm_ops?

На https://www.postgresql.org/docs/current/static/pgtrgm.html объясняется, как можно использовать специальные иды GIN с опцией gin_trgm_ops для повышения производительности оператора подобия триграмм.

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

Также сказано:

Эти индексы не поддерживают ни равенство, ни простые операторы сравнения, поэтому вам может понадобиться и обычный индекс B-дерева.

Однако есть также расширение BTREE_GIN, которое должно позволять использовать индексы GIN вместо индексов BTREE. https://www.postgresql.org/docs/current/static/btree-gin.html

Мой вопрос: если я установлю расширение BTREE_GIN, можно ли использовать индекс GIN pg_trgm (с опцией gin_trgm_ops) вместо индекса BTREE? Объединяет ли он свойства как BTREE_GIN, так и индекса триграмм GIN, или дополнительный индекс BTREE все еще необходим для объединений и выражений равенства и т. Д.?

1 ответ

Решение

Нет, если вы установите btree_ginВы можете создать индекс GIN для "базовых" типов данных, таких как integer, varchar или же text,

Обычно это бесполезно, так как вы можете использовать такой индекс ни для чего, что не было бы лучше с помощью обычного индекса B-дерева, но это очень полезно, если вы хотите создать многоколонный индекс GIN, включающий столбец с такими данными например, если вы хотите создать комбинированный индекс для выражения типа tscol @@ to_tsquery('big data') AND intcol = 42,

Другие вопросы по тегам