Oracle Rownum分页改写
Oracle Rownum分页改写
---说明:案例来自《收获,不止SQL优化》
创建测试数据:
---drop table test_rownum purge;
SQL>createtabletest_rownum asselect*fromdba_objects;
SQL>selectcount(*)fromtest_rownum;---75793
SQL>altersessionsetstatistics_level=all;
SQL>setlinesize 1000
SQL>setpagesize 500
分页写法1:
SQL>select*from(selectt.*,rownumasrn fromtest_rownum t)a wherea.rn>=1anda.rn<=10;
查看执行计划:
SQL>select*fromtable(dbms_xplan.display_cursor(null,null,'allstats last'));
分页写法2:
SQL>select*from(selectt.*,rownumasrn fromtest_rownum t whererownum<=10)a wherea.rn>=1;
查看执行计划:
SQL>select*fromtable(dbms_xplan.display_cursor(null,null,'allstats last'));
总结:写法1的buffer为1080,扫描真实数据为75793条,写法2的buffer只有5,扫描真实数据为10条,性能较写法1有很大改善。
欢迎关注我的微信公众号"IT小Chen",共同学习,共同成长!!!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。