Всем привет.
Есть вот такой страшный запрос:
select
`doctors`.*,
(SELECT file_name FROM images where doctors.id = images.doctor_id AND images.type = "doctor_face") as face_foto,
(SELECT COUNT(*) FROM doctor_in_filials WHERE doctors.id = doctor_in_filials.doctor_id) as filial_count,
(SELECT COUNT(*) FROM reviews as rw_count WHERE doctors.id = rw_count.doctor_id) as reviews_count,
(SELECT AVG(rw_avg.rating_doctor) FROM reviews as rw_avg WHERE doctors.id = rw_avg.doctor_id) as doctor_rating
FROM `doctors` where `doctors`.`id` in
(select `doctor_id` from `doctor_in_filials` where `filial_id` in
(select `id` from `clinic_filials` where `city_id` = 1) group by `doctor_id`
)
Результат 6312 всего, Запрос занял 1.3524 сек. из 11 000 срок в таблице doctors, в других таблицах еще больше строк
Если добавить к запросу order by то все, думает долго даже не дожидался.
Мне так кажется что я не правильно создал запрос т.к. не силен в этом, учусь только
Если убрать вложенные select'ы в начале то сортирует быстро, если убрать все where in то тоже сортирует быстро, а вот когда все на месте не хочет.