Sobes.tech
Back to questions
Middle
1

Как работает GIN-индекс?

Companies where asked
VKVK

Answer from AI

sobes.tech AI

GIN (Generalized Inverted Index) — это тип индекса в PostgreSQL, который оптимизирован для быстрого поиска по сложным типам данных, таким как массивы, JSON, полнотекстовый поиск и другие структуры, где один ключ может соответствовать множеству значений.

Принцип работы GIN-индекса основан на обратном индексе: для каждого значения (ключа) хранится список ссылок на строки таблицы, где это значение встречается. Это позволяет эффективно выполнять запросы с операторами, которые проверяют наличие элементов в массиве или ключей в JSON.

Особенности GIN:

  • Поддерживает быстрый поиск по множественным значениям в одном поле.
  • Индекс занимает больше места и требует больше времени на обновление по сравнению с B-tree.
  • Хорошо подходит для полнотекстового поиска и работы с JSONB.

Пример использования GIN для JSONB:

CREATE INDEX idx_data_gin ON my_table USING GIN (data jsonb_path_ops);

SELECT * FROM my_table WHERE data @> '{"key": "value"}';

Здесь индекс позволяет быстро находить строки, где в поле data содержится указанный ключ и значение.