前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Oracle分页查询方法

Oracle分页查询方法

作者头像
Vaccae
发布2019-07-25 11:13:47
2.8K0
发布2019-07-25 11:13:47
举报
文章被收录于专栏:微卡智享

前言

前面我们介绍Oracle的并行查询,本来是想用并行查询来解决获取所有数据的方法,结果自己测试后发现并没有达到自己想要的效果,所以还是要准备利用分页进行查询了。

分页查询

在Oracle中,并没有想MySql里面的Limit的方法进行过滤,所以要实现分页查询要麻烦一些,需要你用原表进行排序后再通过rownum来时行分页的处理。

Oracle分页查询语句基本上可以按照本文给出的格式来进行套用。

Oracle分分页查询格式:

其中最内层的查询SELECT * FROM TABLE_NAME表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。

上面给出的这个Oracle分分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。

代码实现

我们还是用数据库的tskuplu的表,这个表里有2W4千多数据,我们可以考虑设置一个页数,一个每页的最多行数来分多数查询效果。

我们自己写了一个自定义的查询分页方法,根据每次修改页数,来计算vi_startrow和vi_endrow两个开始行于结束行。然后通过这两个值进行sql语句的拼接。

通过上面执行完后,我们可以看到拼接后的SQL语句,如下图:

然后我们把输出的语句在新的窗口中打开查询后并运行一下结果

可以看出来我们通过分页查询后,可以一段一段的时行输出了,查询的耗时我们也能接受。

最后贴上写的那段语句:

declare vi_page integer; --页数 vi_rows integer; --每页行数 vi_startrow integer; --起始行 vi_endrow integer; --结束行 vs_sSql varchar2(8000); begin --设置页数和每页行数 vi_page:=2; vi_rows:=1000; --计算起始行 vi_startrow:=(vi_page-1)*vi_rows+1; --计算结束行 vi_endrow:=vi_page*vi_rows; vs_sSql:='select * from (select rownum as rowno, t.* from (select * from tskuplu order by pluid) t where rownum<= '||to_char(vi_endrow)||') tb_plu where tb_plu.rowno>='||to_char(vi_startrow); dbms_output.put_line(vs_sSql); end;


-END-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-01-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档