Проверьте равенство строк и агрегатов до сравнения времени выполнения
Зачем
Зачем это нужно
Меняйте один фактор: индекс, условие или форму соединения
Сравните планы при одинаковых параметрах и близком состоянии данных
Вопросы
Частые вопросы
Как попросить план оптимизации SQL без выдуманных замеров?
Нужен план оптимизации SQL-отчёта: таблица orders(id,user_id,status,created_at), отбор оплаченных заказов за месяц, группировка по user_id. СУБД и EXPLAIN пока не указаны. Сначала перечисли недостающие сведения, затем предложи гипотезы по диапазону дат и индексу без обещания ускорения. Дай порядок сравнения строк, агрегатов, планов и времени на тестовой базе; запросы не выполняй.
Что собрать перед разбором медленного запроса?
Укажите СУБД и версию, схему, индексы, объёмы, параметры запроса и план выполнения. Удалите секреты и персональные значения. Сначала зафиксируйте исходный результат и измерения, затем проверяйте одну гипотезу в контролируемой среде.
Какой маленький набор проверит отчёт за месяц?
Возьмите два оплаченных заказа одного пользователя внутри периода, один неоплаченный и одну запись ровно на исключённой верхней границе. Если отчёт считает заказы, ожидаемый счёт пользователя — 2. Сравните исходный и переписанный SQL на этом наборе до замеров скорости.
Можно ли по одному SQL обещать ускорение в несколько раз?
Нет, нужны планы и измерения на подходящих данных. Ускорение также может изменить цену записи или расход памяти. Учитывайте кэш и параметры, повторяйте сравнение осмысленно; EXPLAIN с исполнением запускайте только после оценки нагрузки и побочных действий.
Рядом
Соседние страницы каталога
Дальше — весь каталог задач: поиск по названию, темы и фильтры.