Oracle Rownum分页改写
Oracle Rownum分页改写
---说明:案例来自《 收获,不止SQL优化》
创建测试数据:
---drop table test_rownum purge;
SQL > create table test_rownum as select * from dba_objects ;
SQL > select count (*) from test_rownum ; ---75793
SQL > alter session set statistics_level = all ;
SQL > set linesize 1000
SQL > set pagesize 500
分页写法 1 :
SQL > select * from ( select t. *, rownum as rn from test_rownum t ) a where a.rn >= 1 and a.rn <= 10 ;
查看执行计划:
SQL > select * from table ( dbms_xplan.display_cursor ( null , null , 'allstats last' ));
分页写法 2 :
SQL > select * from ( select t. *, rownum as rn from test_rownum t where rownum <= 10 ) a where a.rn >= 1 ;
查看执行计划:
SQL > select * from table ( dbms_xplan.display_cursor ( null , null , 'allstats last' ));
总结: 写法1的buffer为1080,扫描真实数据为75793条,写法2的buffer只有5,扫描真实数据为10条,性能较写法1有很大改善。
欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341