2016-11-03 4 views
2

На https://www.postgresql.org/docs/current/static/pgtrgm.html объясняется, как специальные функции GIN с параметром gin_trgm_ops могут использоваться для облегчения работы оператора сходства триграмм.Postgresql BTREE_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 по-прежнему необходим для выражения присоединения и равенства и т. Д.?

ответ

2

Нет, если вы установите btree_gin, вы можете создать индекс GIN над “ ” основных типов данных, как integer, varchar или text.

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

+0

Благодарим вас за прямой ответ! – zlatko

Смежные вопросы