Выбор ответа Middle Индексы обновлено

Индекс для jsonb

Вопрос

Какой индекс подходит для запросов WHERE attrs @> '{"color": "red"}' по колонке attrs jsonb?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: GIN. GIN хранит для каждого ключа и значения внутри документа список строк, где они встречаются, и поддерживает оператор вхождения @.

Варианты ответа

  1. GINправильный ответ
  2. B-tree
  3. BRIN
  4. Hash

Разбор

GIN хранит для каждого ключа и значения внутри документа список строк, где они встречаются, и поддерживает оператор вхождения @>. B-tree сравнивает jsonb целиком и для поиска вложенного значения не годится. BRIN хранит диапазоны значений по блокам таблицы, он для данных, упорядоченных физически, вроде времени в логах. Hash умеет только равенство всего значения.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.