Какой индекс будет эффективным для работы с JSONB

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

Ответ

Для работы с JSONB в PostgreSQL эффективны GIN (Generalized Inverted Index) индексы. Они оптимизированы для сложных запросов к JSON-данным, включая поиск по ключам, значениям или их комбинациям.

Пример создания индекса для поиска по ключу email в JSONB-поле data:

CREATE INDEX idx_gin_data ON users USING gin (data jsonb_path_ops);

Для частых запросов по конкретному пути лучше использовать jsonb_path_ops – он компактнее и быстрее для операторов @> (содержит) и @? (существует путь). Если нужен полноценный поиск по любым ключам/значениям, используйте стандартный GIN без jsonb_path_ops.