Обновлять записи один раз в год, равномерно распределять в течение года

Не уверен, что лучший способ описать то, что я пытаюсь сделать, так что терпите меня. Я работаю в PHP с базой данных MySQL.

У меня есть база данных 10000 записей. Предположим, я хочу обновлять 10000/365 каждый день в течение года. Каждая запись обновляется 1 раз в год и красиво распространяется в течение года.

Один из простых способов сделать это — выбрать все записи, а затем для каждой, если идентификатор% 365 = $ day_of_year, обновить эту запись. Я не беспокоюсь о високосном году.

Есть ли способ, которым я могу выбрать только те записи из базы данных, которые мне нужны (около 27), вместо того, чтобы выбирать все 10000 и проходить по каждой? Это работа cron, которую я буду выполнять среди ночи, так что, возможно, это спорный вопрос. Тем не менее, это беспокоит меня, что я должен грубой силой пройти через все 10000. Хотелось бы найти более элегантное решение, потянув лишь крошечную дробь, необходимую.

0

Решение

Добавьте столбец в вашу таблицу, указав день года, когда запись должна быть обновлена.

Затем добавьте событие, которое запускается один раз в год, которое сбрасывает значения этого столбца и вычисляет его новым — 10000 записей распределяются по дням года.

Затем добавьте еще одно событие, которое выполняется каждую ночь, обновляя записи за день.

3

Другие решения

Спасибо за ответ, особенно Юрген и Майк Помакс. Вот решение.

Я добавил новый столбец и заполнил каждую строку случайным значением от 0 до 364. Я мог бы заполнить его другим способом, но это было легко и достаточно близко.

Вот мой псевдокод:

$day_of_year = date('z');
if($day_of_year < 365){ //don't do on Dec 31 of leap year
$qry = "Select ... WHERE ID = $day_of_year";
... //do my thing
}

Работает отлично. Еще раз спасибо.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector