Сопоставление Middle EXPLAIN и оптимизация обновлено

Узлы плана и что они делают

Вопрос

Сопоставь узел плана PostgreSQL с тем, что он делает.

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

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

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

Коротко

Это основные узлы, которые встречаются в планах. Seq Scan выгоден при большой доле строк, Index Only Scan при покрывающем индексе и свежей visibility map, Bitmap Heap Scan при средней селективности или нескольких условиях с разными индексами (BitmapAnd, BitmapOr).

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

Seq Scan
Читает всю таблицу подряд и фильтрует строки
Index Only Scan
Берёт данные только из индекса, в таблицу ходит лишь для проверки видимости
Bitmap Heap Scan
Читает страницы таблицы по битовой карте, собранной из индекса
Hash Join
Строит хеш-таблицу по одной стороне и ищет в ней строки другой
Nested Loop
Для каждой строки внешней стороны заново выполняет внутреннюю
Gather
Собирает строки от параллельных воркеров

Разбор

Это основные узлы, которые встречаются в планах. Seq Scan выгоден при большой доле строк, Index Only Scan при покрывающем индексе и свежей visibility map, Bitmap Heap Scan при средней селективности или нескольких условиях с разными индексами (BitmapAnd, BitmapOr). Hash Join типичен для соединения больших наборов по равенству, Nested Loop для малой внешней стороны и индекса на внутренней, Merge Join (его здесь нет) для заранее отсортированных входов. Gather и Gather Merge появляются в параллельных планах.

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

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

Термины по теме