Всем привет! Предположим в базе несколько миллионов статей.
Подскажите плз логику, которая позволит с максимально меньшей нагрузкой выводить статьи с сортировкой "по обсуждаемости за (день, неделю, месяц)"....
В голове такой вариант:
Создать 3 поля в таблице статей: "comments_day", "comments_week", "comments_month" и каждый час по крону обновлять каждое поле во всех статьях исходя из количество комментариев для статьи в таблице `comments`. Ну а потом само собой сортировать по ним статьи при выводе.
Получается примерно такой запрос:
UPDATE `news` AS n SET
n. `comments_day` = (SELECT count(`id`) FROM `comments` WHERE `news_id` = n.`id` AND DATE_ADD(NOW(), INTERVAL -1DAY))
n.`comments_week` = (SELECT count(`id`) FROM `comments` WHERE `news_id` = n.`id` AND DATE_ADD(NOW(), INTERVAL -1WEEK))
n.`comments_month` = (SELECT count(`id`) FROM `comments` WHERE `news_id` = n.`id` AND DATE_ADD(NOW(), INTERVAL -1MONTH))
Может я использую не правильный подход?