Java 删除ResutSet缓存数据
我需要查询结果集大小,并使用以下代码执行此操作:Java 删除ResutSet缓存数据,java,sql,oracle,Java,Sql,Oracle,我需要查询结果集大小,并使用以下代码执行此操作: int size =0; if (rs != null) { rs.last(); size = rs.getRow(); rs.beforeFirst(); } 然后,我使用classic迭代结果集: while (rs.next()) { // do some } 现在,如果我的结果集中有200行,迭代的执行时间大约是500毫秒。如果我执行代码的第一部分(以获得结果集大小),迭代执行时间将下降到50毫秒 这可能是因为数据被缓存了,有没有办
int size =0;
if (rs != null) {
rs.last();
size = rs.getRow();
rs.beforeFirst();
}
然后,我使用classic迭代结果集:
while (rs.next()) {
// do some
}
现在,如果我的结果集中有200行,迭代的执行时间大约是500毫秒。如果我执行代码的第一部分(以获得结果集大小),迭代执行时间将下降到50毫秒
这可能是因为数据被缓存了,有没有办法避免这种情况或清理缓存
多谢各位
大家好,谢谢你们的回复,所以: 1) 我需要知道结果集中有多少行,因为一些查询提取了数千条记录,我需要通知用户进度的百分比。要做到这一点,我显然需要最大值和中间值 2) 正如Bob Jarvis所说,我希望以与第一次一样慢的速度重新迭代结果集,这是非常愚蠢的,但我不能以低于100毫秒的间隔将消息推送到客户端,如果我得到上面所写的结果集(代码的第一部分),那么进度信息就毫无用处。 例如:包含600行的结果集需要500毫秒才能完成此操作:
int size =0;
if (rs != null) {
rs.last();
size = rs.getRow();
rs.beforeFirst();
}
和60再次迭代,如下所示:
while (rs.next()) {
// do some
}
也许我可以浪费几秒钟的时间以较慢的速度迭代结果集,但可以向用户提供有关某些细化的执行时间的更准确信息
谢谢大家。为什么要清除缓存?您是说希望重新查询与第一个查询一样慢,还是希望第一个查询与第二个查询一样快?为什么需要知道结果集中有多少行?