在我的Java代码中,我使用select语句访问oracle数据库表。
我收到很多行(大约50.000行),因此rs.next()
需要一些时间来处理所有行。
using ResultSet, the processing of all rows (rs.next) takes about 30 secs
我的目标是加快此过程,因此我更改了代码,现在使用了
CachedRowSet
:using CachedRowSet, the processing of all rows takes about 35 secs
我不明白
CachedRowSet
为什么比正常的ResultSet
慢,因为CachedRowSet
一次检索所有数据,而ResultSet
每次调用rs.next
都检索数据。这是代码的一部分:
try {
stmt = masterCon.prepareStatement(sql);
rs = stmt.executeQuery();
CachedRowSet crset = new CachedRowSetImpl();
crset.populate(rs);
while (rs.next()) {
int countStar = iterRs.getInt("COUNT");
...
}
} finally {
//cleanup
}
最佳答案
是什么让您认为ResultSet
会在每次调用rs.next()
时检索数据?这完全取决于实现的工作方式-如果一次获取一个块,我不会感到惊讶。可能是相当大的一块。
我怀疑您基本上是在看到将所有数据复制到CachedRowSet
然后访问全部数据所花费的时间-基本上,您没有目的进行了额外的复制操作。