Выбор ответа Middle EXPLAIN и оптимизация спрашивают часто обновлено

Оценка строк против факта

Вопрос

В плане узел Nested Loop (rows=12) (actual rows=480000 loops=1), запрос медленный. Что вероятнее всего?

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

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

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

Коротко

Правильный ответ: Ошибка оценки строк, план выбран неудачно. Расхождение оценки и факта на порядки главный сигнал: Nested Loop хорош для 12 строк, а на 480 000 он катастрофа.

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

  1. Nested Loop всегда медленный, его надо запретить
  2. Ошибка оценки строк, план выбран неудачноправильный ответ
  3. Таблица повреждена, и план читает лишние страницы
  4. Не хватает памяти shared_buffers для соединения

Разбор

Расхождение оценки и факта на порядки главный сигнал: Nested Loop хорош для 12 строк, а на 480 000 он катастрофа. Причины: статистика устарела, зависимые колонки, сложные выражения. Начинают с ANALYZE, затем расширенная статистика или переписывание условия. Nested Loop сам по себе прекрасен для малых наборов с индексом. Повреждение таблицы на план не влияет, а shared_buffers влияет на попадание в кеш, но не на оценку строк.

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

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

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