Сопоставление Senior Индексы обновлено

Тип индекса под задачу

Вопрос

Сопоставь тип индекса PostgreSQL с задачей, для которой он подходит лучше всего.

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

Нажмите слева, потом подходящее справа.

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

Коротко

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

Правильные пары

B-tree
Равенство, диапазоны и сортировка по обычной колонке
GIN
Поиск внутри составных значений: jsonb @>, массивы, полнотекстовый поиск
GiST
Пересечение диапазонов и геометрия, ограничение EXCLUDE против пересекающихся броней
BRIN
Огромная таблица логов, где время растёт вместе с физическим порядком строк
Hash
Только проверка на равенство

Разбор

B-tree подходит по умолчанию и единственный из них поддерживает уникальность. GIN это инвертированный индекс: ключ элемента указывает на строки, где он встречается. GiST обобщённое дерево для «пересекается, содержит, близко», на нём строятся exclusion-ограничения. BRIN хранит минимум и максимум на диапазон страниц (по умолчанию 128) и занимает очень мало места, но работает только при корреляции значений с физическим порядком. Hash-индекс с PostgreSQL 10 журналируется в WAL и безопасен, но умеет только =, поэтому нужен редко.

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

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