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

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

--1:无ORDER BY排序的写法。(效率最高)

--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!)

SELECT *  FROM (SELECT ROWNUM AS rowno, t.*          FROM emp t         WHERE hire_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')                             AND TO_DATE ('20060731', 'yyyymmdd')           AND ROWNUM <= 20) table_alias WHERE table_alias.rowno >= 10;

--2:有ORDER BY排序的写法。(效率最高)

--(经过测试,此方法随着查询范围的扩大,速度也会越来越慢哦!)

SELECT *  FROM (SELECT tt.*, ROWNUM AS rowno          FROM (  SELECT t.*                    FROM emp t                   WHERE hire_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')                                       AND TO_DATE ('20060731', 'yyyymmdd')                ORDER BY create_time DESC, emp_no) tt         WHERE ROWNUM <= 20) table_alias WHERE table_alias.rowno >= 10;

--3:无ORDER BY排序的写法。(建议使用方法1代替)

--(此方法随着查询数据量的扩张,速度会越来越慢哦!)

SELECT *  FROM (SELECT ROWNUM AS rowno, t.*          FROM k_task t         WHERE flight_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')                               AND TO_DATE ('20060731', 'yyyymmdd')) table_alias WHERE table_alias.rowno <= 20 AND table_alias.rowno >= 10;

--TABLE_ALIAS.ROWNO  between 10 and 100;

 

--4:有ORDER BY排序的写法.(建议使用方法2代替)

--(此方法随着查询范围的扩大,速度会越来越慢哦!)

 

SELECT *  FROM (SELECT tt.*, ROWNUM AS rowno          FROM (  SELECT *                  FROM k_task t                   WHERE flight_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')                                         AND TO_DATE ('20060531', 'yyyymmdd')                ORDER BY fact_up_time, flight_no) tt) table_alias WHERE table_alias.rowno BETWEEN 10 AND 20;

--5另类语法。(有ORDER BY写法)

--(语法风格与传统的SQL语法不同,不方便阅读与理解,为规范与统一标准,不推荐使用。)

WITH partdata AS     (        SELECT ROWNUM AS rowno, tt.*          FROM (  SELECT *                    FROM k_task t                   WHERE flight_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')                                         AND TO_DATE ('20060531', 'yyyymmdd')               ORDER BY fact_up_time, flight_no) tt WHERE ROWNUM <= 20)SELECT *  FROM partdata WHERE rowno >= 10;

--6另类语法 。(无ORDER BY写法)

 

WITH partdata AS     (        SELECT ROWNUM AS rowno, t.*          FROM k_task t         WHERE flight_date BETWEEN TO_DATE ('20060501', 'yyyymmdd')                              AND TO_DATE ('20060531', 'yyyymmdd')           AND ROWNUM <= 20)SELECT *  FROM partdata WHERE rowno >= 10;

 

 

 

 

转载于:https://www.cnblogs.com/tingbogiu/p/5703529.html

你可能感兴趣的文章
《梦断代码》读书笔记(三)
查看>>
AngularJS学习篇(一)
查看>>
spring security 11种过滤器介绍
查看>>
代码实现导航栏分割线
查看>>
大数据学习系列(8)-- WordCount+Block+Split+Shuffle+Map+Reduce技术详解
查看>>
Mysql性能调优
查看>>
ES6内置方法find 和 filter的区别在哪
查看>>
Android实现 ScrollView + ListView无滚动条滚动
查看>>
硬件笔记之Thinkpad T470P更换2K屏幕
查看>>
getElement的几中属性介绍
查看>>
HTML列表,表格与媒体元素
查看>>
设计器 和后台代码的转换 快捷键
查看>>
STL容器之vector
查看>>
数据中心虚拟化技术
查看>>
复习文件操作
查看>>
SQL Server 使用作业设置定时任务之一(转载)
查看>>
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
eggs
查看>>