我必须从PHP更新100,000 + MySQL数据库,从数据库中提取数据。如果我当时尝试超过5,000,那就失败了。
我认为最好的方法可能是使用限制为0,5000的更新查询来执行5,000,然后将这些记录的时间戳加上更新时间。然后,选择下一个5,000,其中上次更新的时间超过当前时间的20分钟。
有人可以提供有关如何构建此查询的任何帮助吗?或者这种方法不是最优的?
答案 0 :(得分:1)
所以这就是我所采用的解决方案,无论是对还是错,它都有效。所以为了回顾这个问题,我有100k行,我需要遍历这些行并将userid传递给返回json feed的API。
我使用返回的数据来更新每条记录。出于某种原因,由于超时或服务器500错误,我认为这是由于API导致的。因此,我只选择5k(限制0,5000)而不是选择所有100k reords,并添加一个名为'updated'的列,并在更新后将其标记为true。
我一直这样做,直到所有记录都更新为止。发生这种情况时,我将更新列设置为false并再次启动该过程。这个脚本每30分钟在一个chron作业上运行,似乎工作正常。我想我可以发现为什么它首先超时,但我怀疑它可能是一个我无法访问的php ini问题(超时设置)。
由于
乔纳森
答案 1 :(得分:0)
创建临时表,多次插入更新数据,然后
UPDATE `table`, `tmp`
SET `table`.`column` = `tmp`.`column`
WHERE `table`.`id` = `tmp`.`id`;