我使用mysql与jdbc。我需要遍历表中的每一行(60,000行,table = InnoDB),并对每个行进行一些处理。选择表中的每一行而不使用限制?
请问mysql会接受一个没有限制的查询吗?在最简单的实现,我只是选择整个表格,并保持迭代的结果,而光标给了我更多的结果:
PreparedStatement stmt = conn.prepareStatement("SELECT * FROM foo");
ResultSet rs = stmt.getResultSet();
while (rs.next()) {
.. do stuff on each row ..
}
我可以实现课程的分页查询做到这一点分批,但它会如第一种方法所述那样简单。我想知道mysql是否在内部执行此操作,或者它试图首先将整个查询结果集加载到内存中?
感谢
它将所有内容加载起来,如果感觉像它一样会炸掉内存 – Drew 2013-05-13 03:41:48
_“请问mysql会接受一个没有这种限制的查询吗?”_为什么不呢?你为什么不尝试一下,看看? – 2013-05-13 03:42:55
@DrewPierce将fetchsize设置为'Integer.MIN_VALUE'不会让你的内存受到MySQL JDBC的影响。 – 2013-05-13 10:51:13