度量快速开发平台-专业、快速的软件定制快开平台

标题: oracle 分页查询小结 [打印本页]

作者: 张兴康    时间: 2020-5-4 16:00
标题: oracle 分页查询小结
分页查询的目的就是控制输出结果集大小,将结果尽快的返回

--在查询的第二层通过ROWNUM <= ??? 来控制最大值,在查询的最外层控制最小值
select * from (select a.*,rownum rn from (select * from sa_staff_info) a where rownum <=2800) where rn >=2780;

--在查询的最外层控制分页的最小值和最大值
select * from (select a.*,rownum rn from (select * from sa_staff_info) a ) where rn between 2780 and 2800;

通过对两条sql语句的测试运行,发现第二条sql运行时间大约要比第一条sql运行时间多0.002秒
这是由于CBO优化模式下,Oracle可以将外层的查询条件推到内层查询中,以提高内层查询的执行效率。对于第一个查询语句,第二层的查询条件WHERE ROWNUM <= 40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就终止查询将结果返回了

--用rownum来分页,并排序
select * from (select a.*,rownum rn from (select * from sa_staff_info order by login_name) a where rownum <=20) where rn >=11;

作者: 万望    时间: 2020-5-6 22:46

作者: 万望    时间: 2020-5-6 22:54
练习,练习
作者: 张兴康    时间: 2020-5-7 16:47
万望 发表于 2015-12-6 22:54
练习,练习



作者: 王爱东    时间: 2020-5-7 16:48
这个学的如何了,要好好的使用哟。




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://bbs.delit.cn/) Powered by Discuz! X3.2