Oracle实现分页查询的SQL语法汇总
本文实例汇总了Oracle实现分页查询的SQL语法,整理给大家供大家参考之用,详情如下:
1.无ORDERBY排序的写法。(效率最高)
经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!
sql语句如下:
SELECT*
FROM(SelectROWNUMASROWNO,T.*
fromk_taskT
whereFlight_datebetweento_date('20060501','yyyymmdd')and
to_date('20060731','yyyymmdd')
ANDROWNUM<=20)TABLE_ALIAS
WHERETABLE_ALIAS.ROWNO>=10;
2.有ORDERBY排序的写法。(效率最高)
经过测试,此方法随着查询范围的扩大,速度也会越来越慢!
sql语句如下:
SELECT*
FROM(SELECTTT.*,ROWNUMASROWNO
FROM(Selectt.*
fromk_taskT
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.无ORDERBY排序的写法。(建议使用方法1代替)
此方法随着查询数据量的扩张,速度会越来越慢!
sql语句如下:
SELECT*
FROM(SelectROWNUMASROWNO,T.*
fromk_taskT
whereFlight_datebetweento_date('20060501','yyyymmdd')and
to_date('20060731','yyyymmdd'))TABLE_ALIAS
WHERETABLE_ALIAS.ROWNO<=20
ANDTABLE_ALIAS.ROWNO>=10;
TABLE_ALIAS.ROWNObetween10and100;
4.有ORDERBY排序的写法.(建议使用方法2代替)
此方法随着查询范围的扩大,速度也会越来越慢!
sql语句如下:
SELECT*
FROM(SELECTTT.*,ROWNUMASROWNO
FROM(Select*
fromk_taskT
whereflight_datebetweento_date('20060501','yyyymmdd')and
to_date('20060531','yyyymmdd')
ORDERBYFACT_UP_TIME,flight_no)TT)TABLE_ALIAS
whereTABLE_ALIAS.rownoBETWEEN10AND20;
5.另类语法。(有ORDERBY写法)
该语法风格与传统的SQL语法不同,不方便阅读与理解,为规范与统一标准,不推荐使用。此处贴出代码供大家参考之用。
sql语句如下:
Withpartdataas(
SELECTROWNUMASROWNO,TT.*FROM(Select*
fromk_taskT
whereflight_datebetweento_date('20060501','yyyymmdd')and
to_date('20060531','yyyymmdd')
ORDERBYFACT_UP_TIME,flight_no)TT
WHEREROWNUM<=20)
Select*frompartdatawhererowno>=10;
6.另类语法。(无ORDERBY写法)
Withpartdataas(
SelectROWNUMASROWNO,T.*
FromK_taskT
whereFlight_datebetweento_date('20060501','yyyymmdd')and
To_date('20060531','yyyymmdd')
ANDROWNUM<=20)
Select*frompartdatawhereRowno>=10;
相信本文所述代码能够对大家有一定的参考借鉴价值。