Как вы будете дебажить медленный SQL-запрос?

Сначала воспроизвожу запрос с реальными параметрами и смотрю план выполнения, фактическое время, число строк и ожидания. Затем проверяю индексы, оценки кардинальности, объём чтения и блокировки.

Короткий ответ

Что ответить на собеседовании

Сначала воспроизвожу запрос с реальными параметрами и смотрю план выполнения, фактическое время, число строк и ожидания. Затем проверяю индексы, оценки кардинальности, объём чтения и блокировки.

Подробный разбор

Ответ с пояснениями

Сначала воспроизвожу запрос с реальными параметрами и смотрю план выполнения, фактическое время, число строк и ожидания. Затем проверяю индексы, оценки кардинальности, объём чтения и блокировки.

EXPLAIN ANALYZE действительно выполняет запрос, поэтому на production его используют осторожно, особенно для записей. Сравниваю ожидаемое и фактическое число строк, дорогие join, сортировки с выходом на диск, повторные сканирования и фильтры. Проверяю свежесть статистики и селективность условий. Изменяю одну гипотезу за раз, затем измеряю результат на сопоставимых данных. Иногда проблема находится в N+1 запросах приложения, а не в одном SQL.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее