Back to questions
VK
Middle
1
Как работает GIN-индекс?
Companies where asked
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 содержится указанный ключ и значение.