java - 结果集需要很长时间来处理来自 Oracle 的大数据
问题描述
在 Oracle 数据库中,我有一个查询select * from tablehistory
- 该查询可以快速运行并返回 500,000 条记录。那不是问题。
- 挑战在于结果集需要很长时间才能循环。
- 如何解决需要很长时间循环的结果集?
- 结果集数据,我打算保存到hash map/do处理中。
- 下面的代码,start 1、2、3打印速度快,start 4打印时间长;很慢
如何加快我的代码?
String mayquery="select * from tablehistory";
try {
System.out.println("# start 0");
PreparedStatement preparedStatement = con.prepareStatement(mayquery);
System.out.println("# start 1");
ResultSet resultSet = preparedStatement.executeQuery();
System.out.println("# start 2");
int count =0;
System.out.println("# start 3");
while (resultSet.next()) {
System.out.println("start 4 count:"+count);
count++;
}
System.out.println("# end a");
System.out.println("count:"+count);
} catch(Exception e) {
}
解决方案
- 尝试将 resultSet.setFetchSize(int) 设置为更高的值。默认情况下,它设置为 10。此参数控制从服务器到 DB 的网络调用次数,并且在最佳使用时可以提高性能。
- 检查网络延迟。
- System.out.println() 是一个繁重的操作。与其每次都打印,不如尝试在一段时间内打印一行。
推荐阅读
- audiokit - AudioKit v5:如何选择麦克风?
- laravel - 我应该创建三个模型还是多态类型
- c - 将结构通过 (void *) 函数参数移回结构
- javascript - 在提交表单之前,如何让动画运行?
- javascript - 使用 Jquery 更改显示数据的简单 Javascript
- r - 为什么 R 中的 html_nodes() 没有给我这个网页所需的输出?
- elasticsearch - Elasticsearch 警告消息
- javascript - 根据数组元素定位 div
- dbcontext - 无法创建“EcommerceContext”类型的对象。对于设计时支持的不同模式
- java - 方形对角线阵列