Home >Database >Mysql Tutorial >探究Oracle分页查询

探究Oracle分页查询

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-06-07 17:19:12895browse

最近在总结DRP项目中的知识点,发现自己对分页查询的理解有些不到位,分页查询是一项非常实用的技术点.接下来我们将一步步的探寻在

最近在总结DRP项目中的知识点,发现自己对分页查询的理解有些不到位,分页查询是一项非常实用的技术点.接下来我们将一步步的探寻在Oracle中如何实现分页查询,以及它的效率如何。

要理解Oracle的分页查询是如何实现需要去了解什么是数据伪列?什么是ROWNUM?

数据伪列?

数据伪列指的是用户不需要处理的列,,而是由oracle自行维护的数据列,在oracle中有两个数据伪列:ROWNUM、ROWID.本篇文章只是介绍一下ROWNUM在分页中的作用.

ROWNUM?

ROWNUM从单词上理解是行号,实际上ROWNUM是为每一个显示的记录都会自动的随着查询生成行号.例如:

探究Oracle分页查询

根据ROWNUM的特点,我们可以通过它来查找相关的页面,从而实现分页查询.

例如,我们想要查找第1,第2条数据:

探究Oracle分页查询

接下来我们要查询第3,第4条记录.也就是rownum的值为3,4的记录.下面有两种方式可以达到上面的效果.

1 通过between.. and..查询第二页用户信息.

如果按照一般的思维,我们会通过写一下的语句来查询第3,4行的记录.

但是执行发现提示错误:未选定行.原因是在此查询语句中rownum是虚拟的,不是实际存在的.这里需要注意一下.但是我们可以通过以下的方式来实现:

探究Oracle分页查询

此时的rownum已经为临时表中的实际数据,所以可以直接拿来用.这样便实现了我们所预期的效果.

2 通过三层结构子查询.

查询第二页用户信息.

探究Oracle分页查询

通过上面的执行过程我们需要已知两点信息:

1当前所在页:currentPage:2.

2每页所显示的长度lineSize:2.

整个查询过程分两步进行:

1先查询出1-4条记录:

select  rownumrn,user_id,user_name,password from t_user where rownum

2再查出第2-4条记录:

select * from(

select  rownumrn,user_id,user_name,password from t_user where rownum

where temp.rn >2;

当然以上两点可以根据用户的需求进行设定,我们也就可以在将具体的数据用变量替代.

查询第三页用户信息.

当前所在页:currentPage:3

每页所显示长度:lineSize:2

探究Oracle分页查询

由于总共有5条记录,所以在此查询中只有一条记录.

以上代码便是分页查询的核心代码.

功能上实现了,那么接下来需要考虑到效率问题,在上面的文章中我们涉及到两种分页的方式.一种用between..and方式,另一种用三层结构子查询的方式.在查询大数据量分页的时候,他们两个谁更有优势呢?

linux

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn