Я создаю приложение с Laravel 5.6 и VueJS, запрашивая данные у API на бэкэнде Laravel.В моей среде DEV запросы вообще не занимают время, но в производственной среде ответ на API занимает 85,7 секунды, а в среде DEV - 0,1 секунды.Данные в обеих средах одинаковы.
Используя следующие команды в моем контроллере, я смог получить точные запросы и выполнить их один за другим:
DB::enableQueryLog();
// then my eloquent stuff
$query = Sportevent::whereHas('photos')->with('photos');
if($request->input('year')){
$year = $request->input('year');
$query = $query->where('date','like', $year.'%');
}
if($request->input('country')){
$country = $request->input('country');
$query = $query->where('country',$country);
}
$sportevents = $query->orderBy('date',"DESC")->paginate(10);
// then I display the queries:
dd(DB::getQueryLog());
Здесьэто запросы, которые не были выбраны, не выбрав год или страну, включая производительность в обеих средах со временем:
// --------------------------------------------------------------
// DEV: 0.0208 seconds | PROD: 73 seconds (had to use stopwatch)
// --------------------------------------------------------------
select count(*) as aggregate from `events` where exists
(select * from `photos` where `events`.`id` = `photos`.`eventID`
and `active` = 1)
// ------------------------------------------
// DEV: 0.025 seconds | PROD: 38.9721 seconds
// ------------------------------------------
select * from `events` where exists (select * from `photos` where
`events`.`id` = `photos`.`eventID` and `active` = 1)
order by `date` desc limit 10 offset 0
// ------------------------------------------
// DEV: 0.0112 seconds | PROD: 0.0141 seconds
// ------------------------------------------
select * from `photos` where `active` = 1 and `photos`.`eventID` in
(11194, 11087, 10506, 10797, 9910, 10118, 10212, 9655, 10047, 10049)
Таблица событий содержит около 6000 записей и фотографий менее 50000 записей.Если вам нужна дополнительная информация, когда речь заходит о структуре таблиц, дайте мне знать, прежде чем голосовать вниз в разделе комментариев :-)
На рабочем сервере много других приложений, работающих с Laravel или Wordpress, использующих базы данных на том же MySQL.установка и ни один из них не имеет подобных проблем.