小编Ivy*_*ang的帖子

扫描一个mysql表,为什么逐行获取结果集要比在内存中完全检索它们快得多?

我们有一个有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秒!

只是感到困惑,为什么逐行获取结果集比检索完成到客户端内存的结果集更快?逐行的方式不应该花费更多的时间进行网络传输?

mysql resultset

5
推荐指数
1
解决办法
369
查看次数

标签 统计

mysql ×1

resultset ×1