while(rs.next())比一系列rs.absolute()更快

BAD*_*EED 8 java benchmarking jdbc

假设有一个ResultSet rswith n对象.

这段代码:

while(rs.next()) {
   // do something on rs
}
Run Code Online (Sandbox Code Playgroud)

在算法上等于这个代码(即两者给出相同的结果):

for(i=1; i<=n; i++) {
   rs.absolute(i)
   // do something on rs
}
Run Code Online (Sandbox Code Playgroud)

但这是否等同于整个过程?第一个更快吗?或者,对于给定的i,rs.next()只是一个包装器rs.absolute(i+1)

最好的问候MC

Mar*_*nik 6

rs.next需要一种更简单的数据库游标(FORWARD_ONLY),rs.absolute因此在大多数情况下,您将降低性能/资源效率rs.absolute.在某些情况下,FORWARD_ONLY无论如何都没有对游标进行优化,您可能会获得相同的性能.

有些驱动程序absolute甚至可以允许调用FORWARD_ONLY,验证请求的记录是下一个,但是其他人可能会抛出异常,无论如何.