Вопрос проверяет понимание того, какие запросы чаще всего становятся причиной деградации производительности базы данных.
В статистику медленных запросов обычно попадают запросы без индексов, запросы с большими сортировками и агрегациями, а также запросы, обрабатывающие большой объем данных. Часто это SELECT с JOIN, ORDER BY или GROUP BY. Также туда попадают частые, но относительно «небольшие» запросы, которые суммарно потребляют много времени.
Медленные запросы — это не только «очень долгие» запросы. Часто это запросы, которые выглядят безобидно, но плохо масштабируются.
Slow query — SQL-запрос, время выполнения которого превышает допустимый порог или который потребляет значительную долю ресурсов БД.
Типичная ситуация:
фильтрация по колонке без индекса;
JOIN по неиндексированным полям.
Результат:
Seq Scan;
чтение всей таблицы.
Часто встречаются:
ORDER BY по неиндексированному полю;
сортировка большого набора строк.
Последствия:
использование диска для временных файлов;
резкий рост времени ответа.
Типичные примеры:
GROUP BY по большим таблицам;
COUNT(*), SUM, AVG без фильтров.
Проблема:
обрабатывается много строк;
нагрузка на CPU.
Особенно опасно:
сложные цепочки JOIN;
объединение больших таблиц без селективных условий.
Даже быстрый запрос может быть проблемным, если:
выполняется тысячи раз;
вызывается в цикле или из N+1.
В статистику медленных запросов чаще всего попадают запросы без индексов, с сортировками, агрегациями и сложными JOIN, а также очень частые запросы с большим суммарным временем.