Oracle实现分页查询的SQL语法汇总

时间:2022-01-06 08:15:41

Oracle实现分页查询的SQL语法汇总

投稿:shichen2014 字体:[增加 减小] 类型:转载 时间:2014-08-12 我要评论

这篇文章主要介绍了Oracle实现分页查询的SQL语法,非常实用的功能,需要的朋友可以参考下

本文实例汇总了Oracle实现分页查询的SQL语法,整理给大家供大家参考之用,详情如下:

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

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

sql语句如下:

?
1234567 SELECT * FROM(Select ROWNUM AS ROWNO, T.*      fromk_task T     whereFlight_date betweento_date('20060501','yyyymmdd') and        to_date('20060731','yyyymmdd')      ANDROWNUM <= 20) TABLE_ALIASWHERE TABLE_ALIAS.ROWNO >= 10;

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

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

sql语句如下:

?
123456789 SELECT * FROM(SELECT TT.*, ROWNUM AS ROWNO      FROM(Select t.*          fromk_task T          whereflight_date betweento_date('20060501','yyyymmdd') and             to_date('20060531','yyyymmdd')          ORDERBY FACT_UP_TIME, flight_no) TT     WHEREROWNUM <= 20) TABLE_ALIASwhere TABLE_ALIAS.rowno >= 10;

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

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

sql语句如下:

?
12345678 SELECT * FROM(Select ROWNUM AS ROWNO, T.*      fromk_task T     whereFlight_date betweento_date('20060501','yyyymmdd') and        to_date('20060731','yyyymmdd')) TABLE_ALIASWHERE TABLE_ALIAS.ROWNO <= 20  ANDTABLE_ALIAS.ROWNO >= 10;TABLE_ALIAS.ROWNO between 10 and100;

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

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

sql语句如下:

?
12345678 SELECT * FROM(SELECT TT.*, ROWNUM AS ROWNO      FROM(Select *          fromk_task T          whereflight_date betweento_date('20060501','yyyymmdd') and             to_date('20060531','yyyymmdd')          ORDERBY FACT_UP_TIME, flight_no) TT) TABLE_ALIASwhere TABLE_ALIAS.rowno BETWEEN 10 AND 20;

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

该语法风格与传统的SQL语法不同,不方便阅读与理解,为规范与统一标准,不推荐使用。此处贴出代码供大家参考之用。

sql语句如下:

?
12345678 With partdata as( SELECTROWNUM AS ROWNO, TT.* FROM (Select *         fromk_task T         whereflight_date betweento_date('20060501','yyyymmdd') and            to_date('20060531','yyyymmdd')         ORDERBY FACT_UP_TIME, flight_no) TT  WHEREROWNUM <= 20)  Select* from partdata where rowno >= 10;

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

?
1234567 With partdata as( SelectROWNUM AS ROWNO, T.*  FromK_task T  whereFlight_date betweento_date('20060501','yyyymmdd') and     To_date('20060531','yyyymmdd')   ANDROWNUM <= 20)  Select* from partdata where Rowno >= 10;

相信本文所述代码能够对大家有一定的参考借鉴价值。

如对本文有所疑问,请点击进入脚本之家知识社区提问。

您可能感兴趣的文章: