mysql和oracle 分页查询(转)
最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴出来供大家学习.....
(一)、 mysql的分页查询
mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式:

/* * sql:可以是单表的查询语句,也可以是多表的联合查询语句 * firstIndex:其实的索引 * pageSize:每页显示的记录数 */ select o.* from (sql) o limit firstIndex,pageSize

如下面的截图,每页显示的记录数为20:
查询(1-20)这20条记录
查询(21-40)这20条记录
mysql的分页查询就这么简单......
(二)、sqlserver2005的分页查询
在sqlserver2005之前一直借助top关键字来实现分页查询,不过效率低,在sqlserver2005及其之后的版本都使用row_number()解析函数来完成分页查询,效率有了很大的提高,不过sql语句比较复杂,下面给出分页查询的通式:

/*
* firstIndex:起始索引 * pageSize:每页显示的数量
* orderColumn:排序的字段名
* sql:可以是简单的单表查询语句,也可以是复杂的多表联合查询语句
*/
select top pageSize o.* from (select row_number() over(order by orderColumn) as rownumber,* from(sql) as o where rownumber>firstIndex;

下面看截图,每页显示20条记录数:
查询(1-20)这20条记录
查询(21-40)这20条记录
知道了sqlserver中的row_number函数,分页也就简单了.....
(三)、oracle分页查询
接下来重点说说oracle的分页查询,oracle的分页查询方法相对来说要多点,ROWNUM、row_number(),今天主要将两种效率稍好的分页查询语句。
①ROWNUM查询分页通式:

/*
* 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()解析函数分页查询通式:

/* * 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()效果会很好(未测试)
mysql和oracle 分页查询(转)的更多相关文章
- mysql和oracle分页查询
MYSQL分页查询 方式1: select * from table order by id limit m, n; 该语句的意思为,查询m+n条记录,去掉前m条,返回后n条记录.无疑该查询能够实现分 ...
- mssqlserver,mysql,oracle分页查询
分页查询语句是sql语句编程中很长见的一个典型应用,用sql语句来分页比一些分页控件的速度要快,所以sql语句的分页在实际编程应用中还是非常广泛的. 今天给大家分享几条不同数据库编程用的分页查询语句. ...
- Oracle/MySql/SQL Sqlserver分页查询
简述 简单概括一下Oracle,MySql,SQL Sqlserver这三个数据库的分页查询语句. Oracle分页查询 例:每页显示两条数据,现在要查询第二页,也就是第3-4条数据. 查询语句: s ...
- 【软件实施面试】MySQL和Oracle联合查询以及聚合函数面试总结
软件实施面试系列文章第二弹,MySQL和Oracle联合查询以及聚合函数的面试总结.放眼望去全是MySQL,就不能来点Oracle吗?之前面过不少公司,也做过不少笔试题,现在已经很少做笔试题了.你肚子 ...
- 【SQL】Oracle分页查询的三种方法
[SQL]Oracle分页查询的三种方法 采用伪列 rownum 查询前10条记录 ? 1 2 3 4 5 6 7 8 9 10 11 [sql] select * from t_user t whe ...
- Oracle分页查询语句的写法(转)
Oracle分页查询语句的写法(转) 分页查询是我们在使用数据库系统时经常要使用到的,下文对Oracle数据库系统中的分页查询语句作了详细的介绍,供您参考. Oracle分页查询语句使我们最常用的 ...
- oracle分页查询及原理分析(总结)
oracle分页查询及原理分析(总结) oracle分页查询是开发总为常用的语句之一,一般情况下公司框架会提供只需套用,对于增删改查而言,查是其中最为关键也是最为难的一块,其中就有使用率最高的分页查询 ...
- oracle 分页查询数据重复问题
最近在做项目的时候发现一个问题,oracle 在查询分页数据的时候,有几条数据重复查询了,并且有几条数据在分页的时候消失了.百度了一下发现,ORACLE 在查询数据的时候返回的行不是固定的,他只是按照 ...
- 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)
分页查询信息 使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目 ...
随机推荐
- 【HTML5】video视频
当前,video 元素支持三种视频格式: 格式 IE Firefox Opera Chrome Safari Ogg No 3.5+ 10.5+ 5.0+ No MPEG 4 9.0+ No No 5 ...
- 【JSP jstl c标签】使用c:foreach 报错(警告)”test does not support runtime expressions“
后台封装的数据是个list,传递给前台,显示如下: <c:forEach items="${userInfo}" var="user"> 用户Nam ...
- LoadRunner字符串与参数的操作及转换技巧
刚开始学LR时,经常搞不清楚变量和参数的区别与用法,最近在一次脚本编写中,整理出来的一些小技巧,与大家一起分享. //字符串复制 strcpy(str,"Hello ") ; // ...
- c# 数据绑定之 DataFormatString 格式
数据绑定之DataFormatString 设定BoundField的DataFormatString,通常有以下几种 DataFormatString= "{0:C}" 货币,货 ...
- packge-info.java
packge-info.java是一个Java文件,可以添加到任何的Java源码包中.packge-info.java的目标是提供一个包级的文档说明或者是包级的注释. packge-info.java ...
- 转 BHO API HOOK Wininet基于IE编程的一些资料
BHO原理:推荐vc base中的文章: 如何使用BHO定制你的Internet Explorer浏览器 API HOOK的基本原理:推荐C++ builder 研究中的文章: API Hook基 ...
- ural 1242. Werewolf
1242. Werewolf Time limit: 1.0 secondMemory limit: 64 MB Knife. Moonlit night. Rotten stump with a ...
- 洛谷 P1313 计算系数 Label:杨辉三角形 多项式计算
题目描述 给定一个多项式(by+ax)^k,请求出多项式展开后x^n*y^m 项的系数. 输入输出格式 输入格式: 输入文件名为factor.in. 共一行,包含5 个整数,分别为 a ,b ,k , ...
- 转:JQuery中$.ajax()方法参数详解
url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...
- Lvs+keepalived+nginx+php的session 保持的算法
●什么是会话保持,有什么作用 会话保持是指在负载均衡器上有一种机制,在作负载均衡的同时,还保证同一用户相关连的访问请求会被分配到同一台服务器上. 会话保持有什么作用呢,举例说明一下 如果有一个用户访问 ...