我们有一个包含 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);
这种方式让驱动程序可以逐行流式传输结果集,并且需要 7 秒才能完成扫描。
Statement stmt =conn.createStatement();
结果集被完全检索并存储在内存中。这种方式需要 21 秒!
只是感到困惑,为什么逐行获取结果集比将完成的结果集检索到客户端内存中要快?逐行的方式不应该花费更多的时间进行网络传输吗?