博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ORACLE分页查询
阅读量:4364 次
发布时间:2019-06-07

本文共 1677 字,大约阅读时间需要 5 分钟。

通用oracle有三种方法来实现分页查询,通过各ROWNUM、ROWID、或分析功能的实现。这将是测试表USER_INFO案件,简要实现三大种分页:

-- Create tablecreate table USER_INFO(  USER_ID      NUMBER(12) not null,  NAME         VARCHAR2(30),  PET_NAME     VARCHAR2(30),  HEAD_ICO     VARCHAR2(255),  CREATE_DATE  DATE not null)
1.依据ROWNUM分页

SELECT TT.*  FROM (SELECT ROWNUM RN, T.*          FROM (SELECT UI.USER_ID,                       UI.NAME,                       UI.PET_NAME,                       UI.HEAD_ICO,                       UI.CREATE_DATE                  FROM USER_INFO UI                 ORDER BY UI.CREATE_DATE DESC) T         WHERE ROWNUM < 600010) TT WHERE TT.RN >= 600000;--运行时间:1.981秒
2.依据ROWID分页

SELECT UI.USER_ID, UI.NAME, UI.PET_NAME, UI.HEAD_ICO, UI.CREATE_DATE  FROM USER_INFO UI WHERE ROWID IN (SELECT RID                   FROM (SELECT ROWNUM RN, RID                           FROM (SELECT ROWID RID                                   FROM USER_INFO                                   ORDER BY CREATE_DATE DESC)                          WHERE ROWNUM < 600010)                  WHERE RN >= 600000) ORDER BY UI.CREATE_DATE DESC; --运行时间:1.887秒
3.依据分析函数分页

SELECT *  FROM (SELECT UI.USER_ID,               UI.NAME,               UI.PET_NAME,               UI.HEAD_ICO,               UI.CREATE_DATE,               ROW_NUMBER() OVER(ORDER BY UI.CREATE_DATE DESC) RK          FROM USER_INFO UI) T WHERE T.RK < 600010   AND T.RK >= 600000--运行时间:2.886秒
从上述三个sql的我们能够发现:

(1) 不管用那种方式实现分页,都是要用到嵌套子查询的;

(2)查询所需字段是一般建议一一列出所需字段,而不是通过select * 的方式所有查出。这样会影响查询效率。

(3)採用ROWID分页查询效率相对较高,ROWNUM和分析函数分别次之。当然,对于数据量非常大的表。可能只通过上述方式是非常慢满足性能需求的。还需通过优化SQL或方法的完整索引。

版权声明:本文博客原创文章。博客,未经同意,不得转载。

转载于:https://www.cnblogs.com/bhlsheji/p/4657036.html

你可能感兴趣的文章
通俗易懂系列 | 设计模式(五):策略模式
查看>>
三核CPU XP系统终极安装SQL 2005
查看>>
SQL语句查询优化续集
查看>>
(四)ServletConfig
查看>>
连接数据库修改篇
查看>>
说说面向对象
查看>>
mybatis学习笔记
查看>>
使用淘宝 NPM 镜像
查看>>
zabbix 乱码的问题
查看>>
Swift 学习之二十一:?和 !(详解)
查看>>
Laravel
查看>>
二分图匹配
查看>>
Day032--Python--操作系统, process进程
查看>>
highcharts-Highmaps 动态传入城市名称
查看>>
english interview
查看>>
寒假222_codeforces 290 div 2 D
查看>>
open-falcon(v0.2)部署手册(源码编译)
查看>>
大明A+B(hdu1753)大数,java
查看>>
局部变量&&malloc函数&&生命周期的一些见解
查看>>
springboot打jar包,调用webservice出错
查看>>