千家信息网

Oracle Rownum分页改写

发表于:2024-11-11 作者:千家信息网编辑
千家信息网最后更新 2024年11月11日,Oracle Rownum分页改写---说明:案例来自《 收获,不止SQL优化》创建测试数据:---drop table test_rownum purge;SQL > create table te
千家信息网最后更新 2024年11月11日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",共同学习,共同成长!!!

0