我一直用的游标分页,也没遇到什么性能问题,就是下边这种:
try{
List<T> list=new ArrayList<T>();
if(page != null)
{
if (rs.last())page.setTotalRow(rs.getRow());
//rs.beforeFirst();
rs.absolute(page.getFirstRow());
}
T obj;
for(int i=1 ; (page == null || i <= page.getPageSize()) && rs.next() ; i++)
{
obj=mapper.mapRow(rs, i);
if(obj!=null)list.add(obj);
}
return list;
}finally{
JdbcUtils.closeResultSet(rs);
}
还有一种就是数据库分页,用row_number
之类的,我的问题是,到底是在程序里用游标分页性能好呢还是数据库分页性能好?
性能没有实际比较过,不过个人推荐 oracle使用 row_number,mysql使用limit。
原因:
1.适用性的范围,如果不是使用JDBC直接操作数据库呢,比如用mybatis或者hibernate等,难道还要费二遍事获得connection然后按照jdbc的方式操作一遍嘛
2.一个盒子里有100个物品,现在需要20个。一种是一次拿出20个,一种是拿20次一次一个。
3.如果没记错的话,jdbc游标如果大量滚动查询,对内存消耗也是很客观的
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。