【发布时间】:2018-07-25 14:14:27
【问题描述】:
我有两个 id,它们对应于数据库中的一系列记录。我想分批处理 1000 条记录。假设这两个 id 是 51234 和 59265。我想循环遍历并确保处理所有记录。
我从下面的 for 循环开始
for(int i = 51234; i < 59265; i= i+1000) {
select * from database where id between i and i+1000;
//do the stuff
}
现在这可以正常工作到第 59234 条记录,那么最后 31 条记录呢?我想在这次运行中处理它们。
我可能可以检查每次迭代中 i 的值是多少,并检查向查询添加 1000 是否超过最大 id 并调整 sql 查询。这是唯一的方法吗?这里的 for 循环是正确的方法吗?
【问题讨论】:
-
我看不出这不起作用的原因。
-
最好在单个 SQL 语句命中从 DB 加载所有直到 59265 并使用 Brandons 回答。 DB命中可能很昂贵!