这就是我的代码的样子。查询执行时间不到一分钟,但 while 循环需要 2 个多小时才能完成!我有大约 800,000 条记录。您能让我知道保存在reportModelList 中的最佳方法吗?如果需要,我什至可以切换到 hibernate 。
PreparedStatement ps =connection.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
try{
while (rs.next()) {
ReportModel t = new ReportModel();
t.set1(rs.getDate(1));
t.set2(rs.getDouble(2));
...
...
t.set60(rs.getString(60));
reportModelList.add(t)
}}finally {
DbUtils.closeQuietly(rs);
}
最佳答案
三点建议。
- 正如@Luiggi Mendoza 作为评论所写的那样,请使用较大的初始缓冲区初始化您的列表,这样它就不会整天重新分配和复制。
- 根据您的数据库和 JDBC 驱动程序,您可能会使用
ps.setFetchSize(50000);
获得加速(使用常量。)如果您的提取大小很小,您会执行大量操作我想要更多次往返您的服务器。 - 不要猜测哪一步是瓶颈;使用分析器。
关于java - 将结果集转换为 Java 模型对于一百万条记录来说速度缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19328570/