Оптимизация выборки с интервалом

Рейтинг: 0Ответов: 1Опубликовано: 07.01.2015

Существует 3 таблицы: users - все пользователи сайта; online_users - онлайн пользователи; news - новости.

Задача - делать выборку актуальных новостей для каждого пользователя. Идея такова: через крон раз в 10 минут перебирать онлайн пользователей и ставить флаг в таблицу users на то, что для пользователя есть актуальные новости. Запрос составлять следующим образом.

  1. SELECT `created_date` FROM `news` ORDER BY `created_date` DESC limit 1 - выбираем самую новую новость
  2. SELECT `online_users`.`user_id` FROM `users` JOIN `online` ON `users`.`id` = `online`.`user_id` WHERE users.`last_readed_news` < '{$actual_news['created_date']}' AND `users`.`new_actual_news` = '0' - перебираем таблицу онлайн пользователей, и выбираем только тех, кто эту новость не читал ещё
  3. UPDATE `users` SET `new_actual_news` = '1' WHERE `id` IN ({$Users_id}) - ставим флаг того, что для пользоваетелей есть новости

Либо конкретно из под каждого пользователя делать запрос на проверку актуальных новостей, например раз в 10 минут.


Каким способом лучше организовать?

Ответы

Ответов пока нет.