【发布时间】:2015-12-22 23:23:54
【问题描述】:
根据 JDBC 规范,Statement.setMaxRows(int maxRows) 方法应该:
设置任何 ResultSet 的最大行数限制 此 Statement 对象生成的对象可以包含给定的 数字。如果超出限制,多余的行将被静默 掉了。
在针对限制 SQL 级别(ROWSET、TOP 和 LIMIT)的结果集进行测试时,JDBC 和 SQL 构造似乎都表现得非常好。
即使选择数百万行,setMaxRows 的性能似乎也没有变差。
会不会是因为数据库Executor使用的数据库游标只能按需获取记录,所以当驱动达到maxRows阈值时,可以指示数据库关闭游标?
这样,数据库不必选择一个庞大的结果集并将其发送到网络,而只是在客户端被丢弃。
【问题讨论】:
标签: mysql sql-server oracle postgresql jdbc