Выбор ответа Middle EXPLAIN и оптимизация спрашивают часто обновлено
Оценка строк против факта
Вопрос
В плане узел Nested Loop (rows=12) (actual rows=480000 loops=1), запрос медленный. Что вероятнее всего?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Ошибка оценки строк, план выбран неудачно. Расхождение оценки и факта на порядки главный сигнал: Nested Loop хорош для 12 строк, а на 480 000 он катастрофа.
Варианты ответа
- Nested Loop всегда медленный, его надо запретить
- Ошибка оценки строк, план выбран неудачноправильный ответ
- Таблица повреждена, и план читает лишние страницы
- Не хватает памяти shared_buffers для соединения
Разбор
Расхождение оценки и факта на порядки главный сигнал: Nested Loop хорош для 12 строк, а на 480 000 он катастрофа. Причины: статистика устарела, зависимые колонки, сложные выражения. Начинают с ANALYZE, затем расширенная статистика или переписывание условия. Nested Loop сам по себе прекрасен для малых наборов с индексом. Повреждение таблицы на план не влияет, а shared_buffers влияет на попадание в кеш, но не на оценку строк.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.