Этот ответ - предположение, а не ответ, но в любом случае он может вам помочь:
Глядя на ваш журнал, на самом деле есть только один запрос, который занимает какое-то время, и он:
SELECT `Zip`.`id`, `Zip`.`title`, `PlansZip`.`id`, `PlansZip`.`plan_id`, `PlansZip`.`zip_id` FROM `zips` AS `Zip` JOIN `plans_zips` AS `PlansZip` ON (`PlansZip`.`plan_id` IN (253, 774, 137, 505, 114, 260, 501, 841, 268, 239, 497, 762, 768, 246, 123, 750, 756, 130, 886, 836, 839, 315, 331, 299) AND `PlansZip`.`zip_id` = `Zip`.`id`) ORDER BY `Zip`.`title` ASC
Я думаю, что причина, по которой это занимает так много времени, заключается в том, как вы объединяете эти два стола. Я думаю, вы найдете что-то вроде этого гораздо быстрее:
SELECT `Zip`.`id`, `Zip`.`title`, `PlansZip`.`id`, `PlansZip`.`plan_id`, `PlansZip`.`zip_id` FROM `zips` AS `Zip` JOIN `plans_zips` AS `PlansZip` ON `PlansZip`.`zip_id` = `Zip`.`id`
WHERE `PlansZip`.`plan_id` IN (253, 774, 137, 505, 114, 260, 501, 841, 268, 239, 497, 762, 768, 246, 123, 750, 756, 130, 886, 836, 839, 315, 331, 299) ORDER BY `Zip`.`title` ASC
Я сделал сопоставимый запрос в своей собственной базе данных и обнаружил, что использование второго метода значительно сократило время, необходимое для выполнения запроса.
Другой вопрос, который я поставил, заключается в том, является ли ваша система разработки зеркалом производственной системы. Если в вашей системе продакшн больше записей, вы можете просто увидеть медленные запросы, которые не масштабируются. В чем разница между количеством записей, возвращаемых на производство? Даже если SQL не является проблемой, он может отстать от необходимости передавать большой объем данных или даже отображать их на экране.