我对“ResultSet”的理解有一些问题。如果我想测量执行查询所需的性能时间,我是否需要遍历Resultset --> while(rs.next()),因为实际结果集已经包含了所有结果?或者它更像是一个缓冲区,在迭代 ResultSet 时会生成一些元组?
Statement b = conn.createStatement();
ResultSet rs2 = b.executeQuery("Select o_orderkey, o_orderstatus, o_orderdate, o_orderpriority, o_comment from orders");
while(rs2.next()){
int okey=rs2.getInt(1);
String st=rs2.getString(2);
Date dt=rs2.getDate(3);
String pr=rs2.getString(4);
String co=rs2.getString(5);
}
long endTime = System.currentTimeMillis();
System.out.println(i+". DuckDB " + (endTime- startTime) +" ms");
对于此示例,性能存在巨大差异。当我只测量在没有 while 循环的情况下构建 ResultSet 所需的时间时,它只是时间的一小部分。这就是为什么我认为它可能取决于数据库,因为 DuckDB 通过数据库进行矢量化。
我现在的问题是,当我只想有时间回答查询时,哪种方式是正确的?