当我们面对 postgresql 数据库时,如果需要对一张大表使用select * from fuckTable
,此时我们为了避免一次性查询所有数据,需要设置游标的fetchSize。但是往往这里不会生效,原因如下:
1、如果connection不是自动提交事务的,那么,fetchSize将生效(非默认)
2、如果statement是TYPE_FORWARD_ONLY的,那么,fetchSize也将生效(默认)
如果想fetchSize生效,必须保证connection是autocommit = false的,并且,statement为1003(forward_only)的:
conn.setAutoCommit(false);
final Statement statement = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.FETCH_FORWARD);
网友评论