Что такое индекс GIN

«Что такое индекс GIN» — вопрос из категории Базы данных, который задают на 23% собеседований Golang Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

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

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

  • Поддерживает операции @>, <@, && (содержит, содержится в, пересекается).
  • Особенно полезен для JSONB, hstore, массивов.
  • Может быть медленнее при вставке/обновлении, чем B-tree, но быстрее в сложных запросах.

Пример для JSONB:

CREATE TABLE products (
    id SERIAL PRIMARY KEY,
    data JSONB
);

CREATE INDEX idx_gin ON products USING GIN (data);
-- Поиск по ключу в JSON
SELECT * FROM products WHERE data @> '{"tags": ["electronics"]}';