CachedRowSet 比 ResultSet 慢?

ben*_*muc 3 java oracle cachedrowset

在我的 java 代码中,我使用 select 语句访问 Oracle 数据库表。我收到很多行(大约 50.000 行),因此rs.next()需要一些时间来处理所有行。

using ResultSet, the processing of all rows (rs.next) takes about 30 secs
Run Code Online (Sandbox Code Playgroud)

我的目标是加快这个过程,所以我更改了代码,现在使用CachedRowSet

using CachedRowSet, the processing of all rows takes about 35 secs
Run Code Online (Sandbox Code Playgroud)

我不明白为什么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
}
Run Code Online (Sandbox Code Playgroud)

Mas*_*sim 5

CachedRowSet 将结果缓存在内存中,即您不再需要连接。因此它首先“慢”。

CachedRowSet 对象是数据行的容器,它将其行缓存在内存中,这使得无需始终连接到其数据源即可进行操作。

-> http://download.oracle.com/javase/1,5.0/docs/api/javax/sql/rowset/CachedRowSet.html