Oracle之 数据分页查询

转载 2015年07月06日 17:42:45



/*

* firstIndex:起始索引

* pageSize:每页显示的数量

* sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句

*/
select * from(select a.*,ROWNUM rn from(sql) a where ROWNUM<=(firstIndex+pageSize)) where rn>firstIndex

以下截图是以这种方式进行的查询语句:

                                                          查询(1-21)这20条记录*****(没有ID=6的记录,所以查询到的最大ID为21)




查询(22-41)这20条记录*****(没有ID=6的记录,所以开始查询到的ID为22,以及最大ID为41)





 ②row_number()解析函数分页查询通式:


</pre><pre name="code" class="sql">/*

 * firstIndex:起始索引

 * pageSize:每页显示的数量

 * orderColumn:排序的字段名

 * sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句

 */
select * from(select * from(select t.*,row_number() over(order by orderColumn) as rownumber from(sql) t) p where p.rownumber>firstIndex) where rownum<=pageSize

 以下截图是使用row_number()方式的分页查询效果:

                                                          查询(1-21)这20条记录*****(没有ID=6的记录,所以查询到的最大ID为21)




      查询(22-41)这20条记录*****(没有ID=6的记录,所以开始查询到的ID为22,以及最大ID为41)





对于oracle的分页查询,特地选出这两种实现方式是因为这两者各有千秋

     首先, 我们知道在ROWNUM查询的方式中,在第二层的sql语句中有个"where ROWNUM<firstIndex+pageSize",根据oracle的原则,第二层查询语句会嵌入到最内层中进行查询,也就是说,最开始执行的查询语句类似于:select * from wyuse where rownum<(firstIndex+pageSize) order by id asc,从数据表中查询出(firstIndex+pageSize)条记录,所以如果这个值很小的话,效率会很好,如果对于大数据量的表单,这个值如果是上千,比如:select * from wyuse where rownum<(5000) order by id asc,这样一开始会选出5000条记录,效率自然会慢很多....

     不过,相对于ROWNUM,row_number()方式可能通过简化可以少一层嵌套,不过貌似对于大数量的查询,效率也高不到哪里去.....不过,对于大数量如果为表建立索引再结合row_number()效果会很好(未测试)



相关文章推荐

oracle分页查询数据重复问题的解决

在oracle分页查询中,我们采用类似以下所示的公认的比较高效的数据库分页查询语句(Effective Oracle by  Design中有描述、众多oracle使用者也做过测试)。 写道 ...
  • henulwj
  • henulwj
  • 2012年08月16日 10:55
  • 801

oracle分页查询数据重复问题的解决

在oracle分页查询中,我们采用类似以下所示的公认的比较高效的数据库分页查询语句(Effective Oracle by Design中有描述、众多oracle使用者也做过测试)。 写道 ...

Oracle、MySql、SQLServer 数据分页查询

Oracle、MySql、SQLServer 数据分页查询          最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来...

Oracle、MySql、SQLServer 数据分页查询

最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习.....        (一)、 mysql的分页查询     ...

Oracle、MySql数据分页查询

本文转载于:http://www.cnblogs.com/wangyong/p/3396333.html (一)、 mysql的分页查询         mysql的分页查询是最简单的,借助关键字...

Oracle、MySql、SQLServer 数据分页查询

转自http://www.cnblogs.com/wangyong/p/3396333.html  最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把...

Oracle、MySql、SQLServer 数据分页查询

http://www.cnblogs.com/wangyong/p/3396333.html 最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的...
  • shmnh
  • shmnh
  • 2015年01月28日 00:56
  • 558

如何解决oracle分页查询数据重复问题

本文转自:http://database.51cto.com/art/201010/231533.htm,未作修改。 oracle分页查询时,会遇到数据重复的问题,下面就教您一个解决orac...

Oracle百万数据的分页查询和测试案例

一、FastUnit平台的分页机制 使用2次查询来实现分页:1. 获取总记录数 select   count ( * )  from  T  where  2. 利用Oracle的rownum获取指定...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle之 数据分页查询
举报原因:
原因补充:

(最多只允许输入30个字)