删除ResutSet缓存的数据

时间:2018-05-07 00:30:04

标签: java sql oracle

我需要查询ResultSet大小,并使用以下代码执行此操作:

int size =0;
if (rs != null) {
rs.last();
size = rs.getRow();
rs.beforeFirst();
}

比我用经典:

迭代ResultSet
while (rs.next()) {
// do some
}

现在,如果我在ResultSet中有200行,那么迭代的执行时间大约是500毫秒。如果我执行代码的第一部分(以获得ResultSet大小),迭代执行时间将减少到50毫秒。

这可能是因为数据被缓存,有没有办法避免这种情况或清理缓存?

谢谢

大家好,感谢您的回复,所以:

1)我需要知道结果集中有多少行,因为有些查询会提取数千条记录,我需要告知用户进度百分比。为此,我显然需要最大值和中间值。

2)正如Bob Jarvis所说,我想重新迭代结果集,因为它很慢,但它是非常愚蠢但我不能以低于100毫秒的间隔将消息推送到客户端,如果我得到ResultSet如上所述(代码的第一部分),进度信息相当无用。 例如:一个包含600行的结果集需要500毫秒来执行此操作:

int size =0;
if (rs != null) {
rs.last();
size = rs.getRow();
rs.beforeFirst();
}

和60再次迭代它如下:

while (rs.next()) {
// do some
}

也许我可以浪费一些时间来慢慢地迭代结果集,但是向用户提供关于某些详细说明的执行时间的更准确的信息。

谢谢大家。

0 个答案:

没有答案