文档章节

Oracle分页查询

爱学习的雷姆
 爱学习的雷姆
发布于 2017/06/22 15:45
字数 397
阅读 7
收藏 1

在Oracle中,分页没有mysql那么简单,需要依靠rownum来实现,Rownum标识每一条记录的行号,值得注意的是它在每一行后才会赋予,因此想指定rownum的区间来取得分页数进行限制在一层查询语句中是无法做到的,还需要在进行一次查询.如下所示

SELECT * FROM 
(
SELECT A.*, ROWNUM RN 
FROM (SELECT * FROM TABLE_NAME) A 
WHERE ROWNUM <= 40
)
WHERE RN >= 21

    

其中 最内层的查询SELECT * FROM TABLE_NAME表示对原始语句进行查询,ROWNUM<=40和RN>=21控制分页查询的每页范围.

另一种方式是在查询的最外层控制分页的最小值和最大值,语句如下:

SELECT * FROM 
(
SELECT A.*, ROWNUM RN 
FROM (SELECT * FROM TABLE_NAME) A 
)
WHERE RN BETWEEN 21 AND 40

对于两种写法来说,绝大多数情况下,第一种的效率要比第二种高的多.

这是由于CBO优化模式下,Oracle的优化器可以将外层的查询条件放到内层查询中,来提高内层查询的效率,对于第一种语句,第二层的查询条件WHERE ROWNUM<=40就可以被Oracle推入到内层查询中,这样Oracle查询的结果一旦超过了ROWNUM限制条件,就可以终止查询将结果返回.

在第二种情况下,查询条件处于第三次,Oracle无法将其推入到最内层,故在内层查询中会查询所有数据,在外层才进行处理,显然效率要低

© 著作权归作者所有

上一篇: 基础答题
下一篇: xml转义
爱学习的雷姆
粉丝 0
博文 5
码字总数 2565
作品 0
南京
程序员
私信 提问

暂无文章

debian10使用putty配置交换机console口

前言:Linux的推广普及,需要配合解决实际应用方能有成效! 最近强迫自己用linux进行实际工作,过程很痛苦,还好通过网络一一解决,感谢各位无私网友博客的帮助! 系统:debian10 桌面:xfc...

W_Lu
39分钟前
10
0
aelf Enterprise 0.8.0 beta有奖公测,“Bug奖金计划”重磅开启

2019年9月30日,aelf Enterprise 0.8.0 beta版正式发布。aelf Enterprise 0.8.0 beta是一个完备的区块链系统, 包含完备的区块链系统、开发套件、开发文档、以及配套的基础应用和基础服务。 ...

AELF开发者社区
40分钟前
8
0
oracle 初始化数据库脚本

create user lpf identified by 123456; create tablespace lpf_ts_cms datafile '/opt/app/oracle/product/11.2.0/lpf.dbf' size 200M; alter user lpf default tablespace lpf_ts_cms; sel......

internetafei
44分钟前
7
0
《区块链DAPP开发入门、代码实现、场景应用》笔记1——天外飞仙DAPP

Solidity编程语言解决了编写智能合约的不友好的问题,但是当合约编译并部署之后,对与这些接口的访问,对于一般的使用者来说,门槛有点高, 对普通用户来说也是非常不友好,为了使广大用户理...

柯南和由美
49分钟前
6
0
流程图制作软件推荐_流程图制作软件哪个好

流程图(Flow Chart)是一种表示算法思路的图示,通过特定图形、图表可以直观的说明某一过程。这种过程既可以是生产线上的工艺流程图,也可以标明某项任务必需的管理过程。为了便于识别,绘制...

工具分享
51分钟前
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部