每年更新一次记录,全年均匀分布

时间:2014-11-04 20:18:16

标签: php mysql algorithm

不确定描述我尝试做什么的最佳方式,所以请耐心等待。我在PHP中使用mysql数据库。

我有一个包含10,000条记录的数据库。假设我想全年每天更新10000/365。每条记录每年更新1次,并且全年都很好地传播。

执行此操作的一种简单方法是选择所有记录,然后为每个记录(如果ID为%365 = $ day_of_year)更新该记录。我并不担心闰年。

有没有办法我只能从数据库中选择我需要的记录(大约27个),而不是选择所有10,000个并循环遍历每个记录?这是一个我将在半夜运行的cron工作,所以这可能是一个有争议的问题。尽管如此,我仍然不得不蛮力通过所有10,000人。只想拉动所需的微小部分,就能找到更优雅的解决方案。

2 个答案:

答案 0 :(得分:3)

在表格中添加一列,指示应更新记录的年份。

然后添加一个每年运行一次的事件,重置该列值并计算新值 - 在一年中的每一天传播10000条记录。

然后添加另一个每晚运行的事件,更新当天的记录。

答案 1 :(得分:0)

感谢您的回应,尤其是Juergen和Mike Pomax。这是解决方案。

我添加了一个新列,并使用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
}

效果很好。再次感谢。