我们有一个有12,000,000条记录的innodb表.
我使用SELECT *JDBC从这个表中使用两种方法.
Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY,java.sql.ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);
Run Code Online (Sandbox Code Playgroud)
这样,驱动程序可以逐行传输结果集,完成扫描需要7秒.
Statement stmt =conn.createStatement();
ResultSet完全检索并存储在内存中.这种方式需要21秒!
只是感到困惑,为什么逐行获取结果集比检索完成到客户端内存的结果集更快?逐行的方式不应该花费更多的时间进行网络传输?