数据库分页和jdbc游标分页性能比较

发布于 2021-11-26 06:22:31 字数 578 浏览 876 评论 3

我一直用的游标分页,也没遇到什么性能问题,就是下边这种:
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之类的,我的问题是,到底是在程序里用游标分页性能好呢还是数据库分页性能好?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜扑 2021-11-29 22:49:46

个人认为的,数据库返回的结果集是全部的,但并不返回到JAVA的内存中,游标移动获取数据,还会去DB获取当前游标数据

柒夜笙歌凉 2021-11-29 16:27:55

引用来自“麒”的评论

性能没有实际比较过,不过个人推荐 oracle使用 row_number,mysql使用limit。

原因:

1.适用性的范围,如果不是使用JDBC直接操作数据库呢,比如用mybatis或者hibernate等,难道还要费二遍事获得connection然后按照jdbc的方式操作一遍嘛

2.一个盒子里有100个物品,现在需要20个。一种是一次拿出20个,一种是拿20次一次一个。

3.如果没记错的话,jdbc游标如果大量滚动查询,对内存消耗也是很客观的

本宫微胖 2021-11-28 15:07:26

性能没有实际比较过,不过个人推荐 oracle使用 row_number,mysql使用limit。

原因:

1.适用性的范围,如果不是使用JDBC直接操作数据库呢,比如用mybatis或者hibernate等,难道还要费二遍事获得connection然后按照jdbc的方式操作一遍嘛

2.一个盒子里有100个物品,现在需要20个。一种是一次拿出20个,一种是拿20次一次一个。

3.如果没记错的话,jdbc游标如果大量滚动查询,对内存消耗也是很客观的

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文