Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除ResutSet缓存数据_Java_Sql_Oracle - Fatal编程技术网

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
}
也许我可以浪费几秒钟的时间以较慢的速度迭代结果集,但可以向用户提供有关某些细化的执行时间的更准确信息


谢谢大家。

为什么要清除缓存?您是说希望重新查询与第一个查询一样慢,还是希望第一个查询与第二个查询一样快?为什么需要知道结果集中有多少行?