不确定描述我尝试做什么的最佳方式,所以请耐心等待。我在PHP中使用mysql数据库。
我有一个包含10,000条记录的数据库。假设我想全年每天更新10000/365。每条记录每年更新1次,并且全年都很好地传播。
执行此操作的一种简单方法是选择所有记录,然后为每个记录(如果ID为%365 = $ day_of_year)更新该记录。我并不担心闰年。
有没有办法我只能从数据库中选择我需要的记录(大约27个),而不是选择所有10,000个并循环遍历每个记录?这是一个我将在半夜运行的cron工作,所以这可能是一个有争议的问题。尽管如此,我仍然不得不蛮力通过所有10,000人。只想拉动所需的微小部分,就能找到更优雅的解决方案。
答案 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
}
效果很好。再次感谢。