我在从Oracle数据库中检索数据时遇到问题。我使用ojdbc8,我的代码是:
Statement stmt = conn.createStatement();
stmt.setFetchSize(20000);
ResultSet rs = stmt.execute(sql);
while(rs.next()) {
for(int i = 0; i < columnCounter; i++) {
logger.info(rs.getString(i) + " ");
}
}
我在这里不明白的是,当我的查询返回时,将53000行全部放在一起然后在while循环中首先在控制台中快速打印40000行然后有一个巨大的20-25秒休息,没有什么发生,然后打印其余行。它总是那样。如果我的查询返回81000行,则打印80000行非常快,然后长制动然后丢失1000行。
所以我不知道为什么但是看起来在ResultSet中我有20000行,这是一个获取大小然后进展顺利,但如果ResultSet小于FetchSize中设置的数量,那么它会减慢速度。任何人都可以解释这里发生了什么,以及如何解决它摆脱这个巨大的差距/制动??