大佬教程收集整理的这篇文章主要介绍了ORACLE分页查询SQL语法——最高效的分页,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
--1:无ORDER BY排序的写法。(效率最高)
--(经过测试,此方法成本最低,只嵌套一层,速度最快!即使查询的数据量再大,也几乎不受影响,速度依然!)
SELECT*
FROM(SELECTROWNUMASrowno,t.*
FROMemp t
WHEREhire_datebetweeNTO_DATE('20060501','yyyymmdd')
ANDTO_DATE('20060731',193)"> ANDROWNUM<=20)table_alias
WHEREtable_alias.rowno>=10;
--2:有ORDER BY排序的写法。(效率最高)
--(经过测试,此方法随着查询范围的扩大,速度也会越来越慢哦!)
SELECT*
FROM(SELECTtt.*,ROWNUMASrowno
FROM( SELECT t.*
FROMemp t
WHEREhire_datebetweeNTO_DATE('20060501','yyyymmdd')
ANDTO_DATE('20060731',193)"> ORDERBYcreate_timeDESC,emp_no)tt
WHEREROWNUM<=20)table_alias WHEREtable_alias.rowno>=10; ================================================================================= =======================垃圾但又似乎很常用的分页写法========================== =================================================================================
--(此方法随着查询数据量的扩张,速度会越来越慢哦!)
SELECT*
FROM(SELECTROWNUMASrowno,t.*
FROMk_task t
WHEREflight_datebetweeNTO_DATE('20060501','yyyymmdd')
ANDTO_DATE('20060731','yyyymmdd'))table_alias
WHEREtable_alias.rowno<=20ANDtable_alias.rowno>=10;
--table_AliAs.ROWNObetween 10 and 100;
@H_772_231@FROM(SELECTtt.*,ROWNUMASrowno
FROM( SELECT*
ANDTO_DATE('20060531',193)"> ORDERBYfact_up_time,flight_no)tt)table_alias
WHEREtable_alias.rownobetweeN10AND20;
--5另类语法。(有ORDER BY写法)
--(语法风格与传统的sql语法不同,不方便阅读与理解,为规范与统一标准,不推荐使用。)
WITHpartdataAS
(
SELECTROWNUMASrowno,tt.*
lign="left" style="margin:0cm 0cm 0pt; padding-top:0px; padding-bottom:0px; border:0px; List-style:disc; word-wrap:normal; word-break:normal; color:rgb(50,flight_no)tt
WHEREROWNUM<=20)
FROMpartdata
WHERErowno>=10;
@H_772_231@ @H_772_231@ --6另类语法 。(无ORDER BY写法)WITHpartdataAS
ANDROWNUM<=20)
WHERErowno>=10;
yangTingkun分析:
--- from :http://yangTingkun.itpub.net/post/468/100278
@H_772_231@ Oracle的分页查询语句基本上可以按照本文给出的格式来进行套用。 @H_772_231@ 分页查询格式:SELECT*
FROM(SELECTa.*,ROWNUMrn
FROM(SELECT*
FROMtable_name)a
WHEREROWNUM<=40)
WHERErn>=21
@H_772_231@ 其中最内层的查询SELECT * FROM table_name表示不进行翻页的原始查询语句。ROWNUM <= 40和RN >= 21控制分页查询的每页的范围。 @H_772_231@ 上面给出的这个分页查询语句,在大多数情况拥有较高的效率。分页的目的就是控制输出结果集大小,将结果尽快的返回。在上面的分页查询语句中,这种考虑主要体现在WHERE ROWNUM <= 40这句上。 @H_772_231@ 选择第21到40条记录存在两种方法,一种是上面例子中展示的在查询的第二层通过ROWNUM <= 40来控制最大值,在查询的最外层控制最小值。而另一种方式是去掉查询第二层的WHERE ROWNUM <= 40语句,在查询的最外层控制分页的最小值和最大值。这是,查询语句如下:FROM(SELECTa.*,ROWNUMrn
FROM(SELECT*
FROMtable_name)a)
WHERErnbetweeN21AND40
SELECT*
FROMtable_name)a
WHEREROWNUM<=40)
WHERErn>=21
以上是大佬教程为你收集整理的ORACLE分页查询SQL语法——最高效的分页全部内容,希望文章能够帮你解决ORACLE分页查询SQL语法——最高效的分页所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。