Есть две таблицы: одна с фильмами, вторая с их расписанием. Нужно выбирать фильмы, сортируя по количеству сеансов этого фильма на определённый промежуток времени. То есть фильмы отображаются все, даже без сеансов, но те, у которых больше сеансов — впереди.
Фильмов несколько тысяч, расписаний — сотни тысяч записей.
Сейчас вот такой запрос:
SELECT `m`.`id` FROM `movies` AS `m` LEFT JOIN `schedule` AS `s` ON `m`.`id` = `s`.`movie` AND `s`.`date` > '2012-11-01' AND `s`.`date` <= '2012-11-02' GROUP BY `m`.`id` ORDER BY COUNT(`s`.`movie`) DESC LIMIT 0, 10
Работает долго, проблема в COUNT(`s`.`movie`), который судя по всему вычисляется для каждого фильма отдельно.
Можно ли это каким-то образом оптимизировать?
P.S. В прошлый раз помогли, спасибо, очень надеюсь на мощь коллективного разума!)