首页 > 解决方案 > 结果集需要很长时间来处理来自 Oracle 的大数据

问题描述

在 Oracle 数据库中,我有一个查询select * from tablehistory

  1. 该查询可以快速运行并返回 500,000 条记录。那不是问题。
  2. 挑战在于结果集需要很长时间才能循环。
  3. 如何解决需要很长时间循环的结果集?
  4. 结果集数据,我打算保存到hash map/do处理中。
  5. 下面的代码,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) {
        
    }

标签: javaoraclejdbcoracle11gresultset

解决方案


  1. 尝试将 resultSet.setFetchSize(int) 设置为更高的值。默认情况下,它设置为 10。此参数控制从服务器到 DB 的网络调用次数,并且在最佳使用时可以提高性能。
  2. 检查网络延迟。
  3. System.out.println() 是一个繁重的操作。与其每次都打印,不如尝试在一段时间内打印一行。

推荐阅读