alexander7779
@alexander7779
SEO, PHP (разработка на Laravel).

Очень большое время выполнения запроса (4903 сек — 81 мин.), что не так?

Добрый день, обратил внимание что на продакшне, запрос выполняется около 2 секунд.
Сайт работает на laravel и выполняется запрос описан встроенным синтаксисом.

DB::table('wheels')
            ->select(DB::raw('count(DISTINCT models.id) as models_count, wheels.pcd, wheels.lz'))
            ->leftJoin('vehicles','vehicles.id','=','wheels.vehicle_id')
            ->leftJoin('modifications','modifications.id','=','vehicles.modification_id')
            ->leftJoin('models','models.id','=','modifications.model_id')
            ->groupBy('wheels.pcd','wheels.lz')
            ->orderBy('models_count','DESC')
            ->get();


Запустил на локалке, тут всё оказалось хуже. 81 минуту.
Запустил отладку медленных запросов. mysql видит запрос таким:

select count(DISTINCT models.id) as models_count, wheels.pcd, wheels.lz 
from `wheels` 
left join `vehicles` on `vehicles`.`id` = `wheels`.`vehicle_id` 
left join `modifications` on `modifications`.`id` = `vehicles`.`modification_id` 
left join `models` on `models`.`id` = `modifications`.`model_id` 
group by `wheels`.`pcd`, `wheels`.`lz` 
order by `models_count` desc


Sending data - занимает 99.97% от времени запроса.
В таблицах много строк.
wheels - 495679
vehicles - 98088
models - 2006
modifications - 14997
Приложил схему бд.
5ad316fb600f2879097464.jpeg

на продакшне, запрос генерируется пару секунд. не кешировал.
на локале 81 минуту. может конечно там сервер мощнее и перемалывает))
На хостинге MySQL - 5.7.21, на локалке 5.6

Вот сам результат выполнения запроса
в нижней части страницы - Ручной подбор по разболтовке диска razboltovka.ru/
  • Вопрос задан
  • 142 просмотра
Решения вопроса 1
@forspamonly2
нет ни схемы в нормальном виде, ни плана запроса.

но на картинке заметно отсутствие ключика на vehicles.id
если у этой таблицы дейстивтельно нет первичного ключа, то из-за этого оно точно тормозит.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@BorisKorobkov Куратор тега MySQL
Web developer
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы