OracleRownum分页改写

Oracle Rownum分页改写

专注于为中小企业提供成都网站制作、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业港南免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了上1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

---说明:案例来自《   收获,不止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' ));

Oracle Rownum分页改写

分页写法 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' ));

Oracle Rownum分页改写

总结: 写法1的buffer为1080,扫描真实数据为75793条,写法2的buffer只有5,扫描真实数据为10条,性能较写法1有很大改善。

欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!

Oracle Rownum分页改写


新闻标题:OracleRownum分页改写
URL分享:http://hbruida.cn/article/pdgdgs.html