oracle的分页查询语句(oracle分页查询示例)
oracle的分页查询语句,原文标题:一文看懂Oracle分页查询的3种实现方案–\u0026gt;fetch first rows。概述今天主要介绍一下Oracle的分页的一个实现方式
oracle的分页查询语句,原文标题:一文看懂Oracle分页查询的3种实现方案–\u0026gt;fetch first rows。
概述
今天主要介绍一下Oracle的分页的一个实现方式,也是最近在做部门培训时介绍的一个新特性,下面介绍下测试的一个实验。
1、环境准备
准备测试数据267万
CREATE TABLE t AS SELECT ROWNUM ID, A.* FROM DBA_OBJECTS A;insert into t select * from t;//…..


2、需求
需求:按照对象ID排序,取第21条到30条记录。
大家可以思考下碰到这种情况应该怎么实现?
3、实现方案1
这里用rownum分页查询的写法实现:
set timing on;SELECT OBJECT_ID, OBJECT_NAME FROM (SELECT ROWNUM RN, A.* FROM (SELECT OBJECT_ID, OBJECT_NAME FROM T ORDER BY OBJECT_ID) A WHERE ROWNUM <= 30) WHERE RN > 20;

查看执行计划

4、实现方案2
这里主要用前面介绍的分析函数实现:
SET TIMING ON;SELECT OBJECT_ID, OBJECT_NAME FROM (SELECT ROW_NUMBER() OVER(ORDER BY OBJECT_ID) RN, OBJECT_ID, OBJECT_NAME FROM T) WHERE RN <= 30 AND RN > 20;

查看执行计划:
性能倒没有太大的变化。

5、实现方案3
Database 12c的FETCH FIRST ROWS特性可以简化老版本中ROW_NUM()或ROWNUM的分页排序写法, 大幅节约开发花在分页查询语句上的时间。
row-limiting子句用以限制某个查询返回的行数
- 可以通过FETCH FIRST/NEXT关键字指定返回结果的行数
- 可以通过PERCENT关键字指定返回结果的行数比例
- 可以通过OFFSET关键字指定返回从结果集中的某一行之后行数
12c row-limiting子句对于排序数据限制返回行今后会广泛使用(MySQL上早就有的特性,MySQL开发该特性可能是特别考虑到对于网站分页查询的简化),也可以被称作Top-N查询。
这个是属于12c的新特性了,刚好没有相关环境,所以就不列出执行计划了。
SET TIMING ON;–12c才有SELECT OBJECT_ID, OBJECT_NAME FROM T ORDER BY OBJECT_ID OFFSET 20 ROWS FETCH NEXT 10 ROWS ONLY;

加上前面主要分享了4个Oracle的新特性,这4个新特性都有不同的应用场景,建议大家多去练习掌握。后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注一下~

随机文章
SEO小小课堂网站长导航
关键词排名优化
SEO小小课堂网
SEO教程
站长导航
友情链接交换
搜素引擎算法
百度搜索“网赚联盟”即可找到本站,微信搜索“小小课堂网”关注小小课堂网公众号。网赚联盟( wangzhuan.org.cn )欢迎用户投稿,发布者:波波说运维,文章版权归作者所有,投稿文章不代表网赚联盟立场,中二少年发布为网赚联盟原创文章,转载请注明出处:https://wangzhuan.org.cn/337684.html

微信扫一扫
支付宝扫一扫