oracle分页数据显示,oracle大批量数据分页显示方法

若数据量很大,要分好几百页,如果一次将结果都查询出来,速度会很慢,下面我学会的一种解决方法:

若每页显示10条,使用SQL每次只查询出要显示的10条数据。即第一次查询出1-10条数据,第二次查询出11-20条数据,依次类推。

具体的SQL语句的写法如下:

例如若要查询出第4901-5000的100条数据,SQL为:

select * from (select t.*,rownum my_rownum from  cust_info t)

where my_rownum>4900 and my_rownum <=5000

其实这种方法就是通过两次查询,在第一次查询中生成行号rownum这个字段,字段中的值是按照查询结果从1开始依次按顺序填充的(即结果集第几行对应的行号就是几)。第二次查询再以第一次查询中生成的行号为查询条件,选出部分你想要的数据。

但是如果你的第一次查询中带有order by的排序子句,生成的行号并不是和结果集的记录的行的位置依次对应的,这是因为数据库是先生成行号,后排序的。所以若要在带order by子句的结果集中取出第n行到第n+m行数据,就需要三次查询,即先查询出结果,第二次查询生成行号,第三次查询从第二次查询中取出部分数据。

具体的SQL语句如下:

select * from(select rownum as myrownum,mytable.* from(" + sql +") mytable) where myrownum <= " + pageid*N + " and myrownum > " + (pageid-1)*N

总之,这种方法基本可以解决大批量数据分页问题,速度相对于直接查询出全部结果要快。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值