oracle的分页处理,oracle中针对一个一千条记录的表如果要查200到300的记录怎么查

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了oracle的分页处理,oracle中针对一个一千条记录的表如果要查200到300的记录怎么查相关的知识,希望对你有一定的参考价值。

oracle的分页处理,oracle中针对一个一千条记录的表如果要查200到300的记录怎么查

Oracle有3种分页处理语句
1、根据ROWID分页
2、按分析函数分页
3、按rownum分页
其中1的效率最高,2的效率最低,3的效率比2好很多,比1的差距也很小,是经常使用的分页处理语句;
3的语句有固定的格式,基本有以下步骤构成
a、查询原表,从原表中取出分页中需要的字段,并排序
select ename ,sal from emp order by sal
b、对a取到的内容进行rownum编号
select a1.*,rownum rn from (select ename ,sal from emp order by sal) a1
c、添加分页结束行号
select a1.*,rownum rn from (select ename ,sal from emp order by sal) a1 where rownum<=300
d、添加分页开始行号
select a2.*
from (select a1.*,rownum rn from (select ename ,sal from emp order by sal) a1 where rownum<=300) a2
where rn>=200
d中的语句可以用作rownum分页的模板使用,使用时修改select ename ,sal from emp order by sal,开始行号,结束行号就可以了。
参考技术A 首先要知道你的分区字段是什么,如果你括号中的语句没有分区字段的条件限制,那肯定会全表扫描的。如果你是以create_time为分区字段,就是按时间来分区的,那么你的where条件中应该增加create_time的时间条件,这样oracle就会在时间限定的分区中扫描了。 参考技术B 分页就要先排序
SELECT *
FROM (SELECT a.*, rownum rn
FROM (SELECT * FROM table_name ORDER BY col_name) a
WHERE rownum <= 300)
WHERE r >= 200
参考技术C SELECT *
FROM (SELECT a.*, rownum rn
FROM (SELECT * FROM table_name ORDER BY col_name) a
WHERE rownum <= 300)
WHERE r >= 200

常见的几种分页--总结在于坚持

由于近期自己工作不是太忙,总结了一些知识,给大家分享。

   目前在一些商品展示或者是信息展示时,由于展示的东西多,而使一个页面没法完全展示态度信息,此时就需要进行对信息进行分页处理展示了。针对不同的数据库,分类的写法是不一样的,在此总结一些常见的分页,如MySQL中的分页、Oracle中的分页还有EasyUi中的分页如何书写实现。

1.Oracle的分页实现

下边结合自己以前写的小demo(采用JDBC和struts2写的),大概的介绍一下自己是如何实现分页。对oracle的分页采用的是rownum(伪列)。
(1)dao层的设计
select * from (select rownum rn, id,name,mobile,telphone,email,city,birthday,imagepath from person)tb1 where tb1.rn between ? and ?
这条sql主要作用:获取每页联系人。其中begin是每页显示的起始条数,而end表示每页结束的条数。
下边是该方法。currentPage 表示当前页(码),pageSize 表示每页需要显示的条数。然后根据关系可以算出当前页的起始条数(begin )和结束的条数(end )。
例如:设置每页显示5条数据(即pageSize = 5),获取第2页的信息(即currentPage = 2)。
可以计算出 begin = (2-1)*5+1=6, end=2*5=10。即第二页显示第6条到第10条信息。

技术分享

同时还需要计算出总共的信息条数,即总数。
sql语句:select count(*) from person
主要作用:计算总共有几个人。count是oracle的聚合函数,可以计算总数。
下边的方法主要是计算出总页数。

 技术分享

(2)service层的设计
service只是调用dao层对应的方法,返回值。
技术分享
(3)action层的设计
设置初始化参数。

 技术分享

分页查询方法:

技术分享

(4)前端页面设计

 技术分享

(5)实现结果

 第一页显示

 技术分享

技术分享

尾页显示

技术分享
 
总结:以上就是实现oracle分页的全过程,只要分页的几个变量理解透,其实还是很好做的。由于技术是相通的,不管你换成mybatis+spring还是其它,只要使用的是oracle数据库,其分页大多是相似的。希望上述内容可以帮助到他人,共同进步。后期还会继续写mysql数据库的分页,希望继续关注,共同学习。

 

以上是关于oracle的分页处理,oracle中针对一个一千条记录的表如果要查200到300的记录怎么查的主要内容,如果未能解决你的问题,请参考以下文章

oracle 高效分页查询SQL

Mybatis分页插件PageHelper使用

在oracle数据库中的分页SQL语句怎么写?

oracle 的分页查询与mysql 的分页查询

oracle的分页查询

oracle 的分页与 mySQL'的分页转化