分页查询Oracle语法

来源:互联网 发布:自学英语口语的软件 编辑:程序博客网 时间:2024/05/30 04:40

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

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

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

sql语句如下:

?
1
2
3
4
5
6
7
SELECT*
 FROM(SelectROWNUMASROWNO, T.*
      fromk_task T
     whereFlight_datebetweento_date('20060501','yyyymmdd')and
        to_date('20060731','yyyymmdd')
      ANDROWNUM <= 20) TABLE_ALIAS
WHERETABLE_ALIAS.ROWNO >= 10;

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

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

sql语句如下:

?
1
2
3
4
5
6
7
8
9
SELECT*
 FROM(SELECTTT.*, ROWNUM ASROWNO
      FROM(Selectt.*
          fromk_task T
          whereflight_datebetweento_date('20060501','yyyymmdd')and
             to_date('20060531','yyyymmdd')
          ORDERBYFACT_UP_TIME, flight_no) TT
     WHEREROWNUM <= 20) TABLE_ALIAS
whereTABLE_ALIAS.rowno >= 10;

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

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

sql语句如下:

?
1
2
3
4
5
6
7
8
SELECT*
 FROM(SelectROWNUMASROWNO, T.*
      fromk_task T
     whereFlight_datebetweento_date('20060501','yyyymmdd')and
        to_date('20060731','yyyymmdd')) TABLE_ALIAS
WHERETABLE_ALIAS.ROWNO <= 20
  ANDTABLE_ALIAS.ROWNO >= 10;
TABLE_ALIAS.ROWNObetween10and100;

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

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

sql语句如下:

?
1
2
3
4
5
6
7
8
SELECT*
 FROM(SELECTTT.*, ROWNUM ASROWNO
      FROM(Select*
          fromk_task T
          whereflight_datebetweento_date('20060501','yyyymmdd')and
             to_date('20060531','yyyymmdd')
          ORDERBYFACT_UP_TIME, flight_no) TT) TABLE_ALIAS
whereTABLE_ALIAS.rownoBETWEEN10AND20;

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

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

sql语句如下:

?
1
2
3
4
5
6
7
8
Withpartdataas(
 SELECTROWNUMASROWNO, TT.* FROM(Select*
         fromk_task T
         whereflight_datebetweento_date('20060501','yyyymmdd')and
            to_date('20060531','yyyymmdd')
         ORDERBYFACT_UP_TIME, flight_no) TT
  WHEREROWNUM <= 20)
  Select*frompartdatawhererowno >= 10;

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

?
1
2
3
4
5
6
7
Withpartdataas(
 SelectROWNUMASROWNO, T.*
  FromK_task T
  whereFlight_datebetweento_date('20060501','yyyymmdd')and
     To_date('20060531','yyyymmdd')
   ANDROWNUM <= 20)
  Select*frompartdatawhereRowno >= 10;

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

0 0
原创粉丝点击