1

我的数据库托管在 mysql 服务器上,我正在使用 Java 来分析数据。

我的问题:执行“选择”查询后将返回 2.5 GB 的结果集。我不想将所有数据加载到内存中。那么有什么方法可以让我不断地检索数据并处理它?

'limit by rows' 将不是一个选项,b/c 这 2.5 GB 的数据是从 4 个表中加入和检索的。所以“按行限制”会大大增加我的总运行时间。

我已经尝试过 statement.setFetchSize(50),但它似乎没有像我预期的那样工作。

任何建议将不胜感激!谢谢!

4

2 回答 2

1

语句 stmt = readOnlyConn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY);

stmt.setFetchSize(Integer.MIN_VALUE);

上面的代码解决了我的问题。谢谢您的帮助!

于 2013-05-31T17:16:15.020 回答
1

BlockquoteStatement stmt = readOnlyConn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); stmt.setFetchSize(Integer.MIN_VALUE); 上面的代码解决了我的问题。谢谢您的帮助!

是的,但是如果您使用的是 postgres,您还必须关闭自动提交!(工作 2 小时后实现 =D)

在此处查看 postgres 文档

于 2016-11-02T16:42:47.527 回答