我需要查询ResultSet大小,并使用以下代码执行此操作:
int size =0;
if (rs != null) {
rs.last();
size = rs.getRow();
rs.beforeFirst();
}
比我用经典:
迭代ResultSetwhile (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
}
也许我可以浪费一些时间来慢慢地迭代结果集,但是向用户提供关于某些详细说明的执行时间的更准确的信息。
谢谢大家。