Oracle Pagination

本文深入探讨了SQL中使用rownum进行分页查询的优化策略与实践,包括如何正确构造SQL语句以提高查询效率,以及不同场景下分页查询的实现方式对比。重点介绍了分页查询的常见问题、解决方法以及SQL语句的优化技巧。

rownum为虚拟列,不是实际物理列

select rownum,t.code from sys_config t; // 取得行数和code列

select rownum, t.code from sys_config t where rownum <=20 order by t.code; // 取得行数<=20,并按code排序,排序失败

select rownum, code from (select * from sys_config order by code) where rownum <=20; // 取得前20行成功

select rownum, code from (select * from sys_config order by code) where rownum>=1 and rownum <=20; // 取得1到20行成功

select rownum, code from (select * from sys_config order by code) where rownum>=2 and rownum <=20; // 取得2到20行失败

select rn,code from (select rownum as rn,code from (select * from sys_config order by code)) where rn >=2 and rn <=20; // 取得2到20行成功

最后一行为分页查询SQL语句,其他分页语句:
select * from (select rownum as rn, T.* from (select * from table_name) T where rownum<40) where rn>21; // 效率高些
select * from (select rownum as rn, T.* from (select * from table_name) T) where rn between 20 and 40; // 效率低些

参考连接文章:

http://database.51cto.com/art/201106/270156.htm

http://database.51cto.com/art/200904/118737.htm

转载于:https://www.cnblogs.com/garinzhang/archive/2012/12/12/2814261.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值