经典等价改写2(rownum分页)

本文介绍了Oracle数据库中使用ROWNUM进行分页查询的两种常见方法,并通过示例对比了它们的执行效率。重点讲解了如何通过优化ROWNUM的使用减少扫描行数,提高查询性能。
摘要由CSDN通过智能技术生成

1.2 Rownum分页改写
Rownum是Oracle的一个伪列,是Oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀。

这里先介绍一个基本常识:如果你用>,>=,=,between…and这些条件,因为从缓冲区或数据文件中得到的第一条记录的rownum为1,则被删除,接着取下条,可是它的rownum还是1,又被删除,依次类推,便没有了数据,所以rownum一般用在<和<=的场景下,才会返回记录。还请读者自行做试验体会。

Rownum在现实应用中还经常用在分页查询,比如查询第1条到第10条记录,此时rownum>=1 and rownum<=10的写法肯定是不能查出记录的,具体原因前面介绍过了。现在关键有两种写法,一种是将rownum 用另外一个别名来代替,比如rn,并包在结果集里,然后由于rn已经是常量,改写成rn>=1 and rn<=10,写法1如下:

drop table test_rownum purge;

create table test_rownum as select * from dba_objects;

select count(*) from test_rownum;

COUNT(*)


111052

alter session set statistics_level=all ;

set linesize 1000

set pagesize 500

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值