ResultSet.last()在大数据量是导致OutOfMemory

s_phoenix 2005-01-22 01:02:52
我想实现分页,在获取返回结果集的行数时:
ResultSet rs=stmt.executeQuery(sql);
rs.last();
intRowCount = rs.getRow();
在小数据量时没问题,可数据量大一点(3W条记录),rs.last()就导致内存溢出。
请问还有其他办法获取结果集行数吗?
...全文
251 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
以梦为马 2005-01-24
  • 打赏
  • 举报
回复
友情up。
zealVampire 2005-01-22
  • 打赏
  • 举报
回复
同意楼上的
cutelion 2005-01-22
  • 打赏
  • 举报
回复
先执行一次查询:
select count(*)as Count from table // Count为所求

select * from table
while(rs.next())
{
Count=rs.getRow(); // Count为所求
}
liueos 2005-01-22
  • 打赏
  • 举报
回复
个人认为可能由于你的表中的数据量过大造成的程序调用rs.last内存消耗过大造成,我做过一次测试用rs.last对一个大表的数据集操作程序用了30秒以上的时间,感觉就跟循环调用rs.next差不多,效率并不想你想的那么高,所以就效率来讲,用数据库的sql绝对比你用程序要快。
m_m1m2m3m4m5 2005-01-22
  • 打赏
  • 举报
回复
把JVM中的锾冲作大
s_phoenix 2005-01-22
  • 打赏
  • 举报
回复
count(*)的方法不使用,不在考虑的范围内。
windy_678 2005-01-22
  • 打赏
  • 举报
回复
关注
java_augur 2005-01-22
  • 打赏
  • 举报
回复
先执行一次查询:
select count(*)as Count from table
这个最快。晕
s_phoenix 2005-01-22
  • 打赏
  • 举报
回复
rs.absolute(10000)快还是
rs.next() 1000次快?
难道就没有其他办法结果RowCount了吗?
taoxuwen 2005-01-22
  • 打赏
  • 举报
回复
up

81,091

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧