Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Postgres: jsonb, gin, index, jsonb_path_ops, postgresql

Как ускорить запрос к таблице, если фильтрация идёт по полю в формате JSON?

Проверяет знание возможностей индексирования JSON‑структур в СУБД.

Короткий ответ

Для JSONB-полей в PostgreSQL создают GIN‑индекс или комбинацию B‑tree и GIN с оператором jsonb_path_ops. Это позволяет быстро искать по ключам и значениям внутри JSON без полного сканирования таблицы.

Длинный ответ

Преобразовать в JSONB:

  • Использовать колонку типа jsonb вместо json.

Создать GIN‑индекс:

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

Использовать операторы:

  • data->>'key' = 'value' или data @> '{"key":"value"}'.

Часто используемые пути:

  • Можно создать частичный индекс только для часто запрашиваемых ключей.

Примечание:

  • GIN‑индексы дороже при вставке, но значительно ускоряют сложные JSON‑фильтры.

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.

Уровень

  • Рейтинг:

    2

  • Сложность:

    5

Навыки

  • Postgres

    Postgres

Ключевые слова

#jsonb

#gin

#index

#jsonb_path_ops

#postgresql

Подпишись на Python Developer в телеграм

  • Аватар

    Golang Guru

    Maxim Lukyanov

    Guru – это эксперты YeaHub, которые помогают развивать комьюнити.