dzheka3d
@dzheka3d

Как создать разные варианты сортировки?

Всем привет! Предположим в базе несколько миллионов статей.
Подскажите плз логику, которая позволит с максимально меньшей нагрузкой выводить статьи с сортировкой "по обсуждаемости за (день, неделю, месяц)"....
В голове такой вариант:
Создать 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))


Может я использую не правильный подход?
  • Вопрос задан
  • 90 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы