最近简单的对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()效果会很好(未测试)

Oracle、MySql、SQLServer 数据分页查询的更多相关文章

  1. Oracle、MySql、SQLServer数据分页查询

    看过此博文后Oracle.MySql.SQLServer 数据分页查询,在根据公司的RegionRes表格做出了 SQLserver的分页查询语句: 别名.字段 FROM( SELECT row_nu ...

  2. 转Oracle、MySql、SQLServer 数据分页查询

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

  3. mysql百万数据分页查询速度

    百万数据测试 ,; 受影响的行: 时间: .080ms ,; 受影响的行: 时间: .291ms ,; 受影响的行: 时间: .557ms ,; 受影响的行: 时间: .821ms ,; 受影响的行: ...

  4. Sqlserver数据库分页查询

    Sqlserver数据库分页查询一直是Sqlserver的短板,闲来无事,想出几种方法,假设有表ARTICLE,字段ID.YEAR...(其他省略),数据53210条(客户真实数据,量不大),分页查询 ...

  5. 分页查询信息(使用jdbc连接mysql数据库实现分页查询任务)

             分页查询信息       使用jdbc连接mysql数据库实现分页查询任务 通过mysql数据库提供的分页机制,实现商品信息的分页查询功能,将查询到的信息显示到jsp页面上. 本项目 ...

  6. [.NET] SQL数据分页查询

    [.NET] SQL数据分页查询 程序下载 范例下载:点此下载 原始码下载:点此下载 NuGet封装:点此下载 数据查询 开发系统时,使用C#执行SQL查询指令,就可以从SQL数据库里查询所需数据. ...

  7. Oracle/Mysql/SqlServer函数区别

    mysql日期和时间格式转换 Linux scp 使用详解 Oracle/Mysql/SqlServer函数区别 2011-07-01 12:34:36|  分类: Mysql技术 |  标签:mys ...

  8. Oracle中的SQL分页查询原理和方法详解

    Oracle中的SQL分页查询原理和方法详解 分析得不错! http://blog.csdn.net/anxpp/article/details/51534006

  9. oracle count 百万级 分页查询记要总数、总条数优化

    oracle count 百万级 分页查询记录总数.总条数优化 oracle count 百万级 查询记录总数.总条数优化 最近做一个项目时,做分页时,发现分页查询速度很慢,分页我做的是两次查询,一次 ...

随机推荐

  1. WebSocket实战之————GatewayWorker使用笔记例子

    参考文档:http://www.workerman.net/gatewaydoc/ 目录结构 ├── Applications // 这里是所有开发者应用项目 │ └── YourApp // 其中一 ...

  2. Python实现各种排序算法的代码示例总结

    Python实现各种排序算法的代码示例总结 作者:Donald Knuth 字体:[增加 减小] 类型:转载 时间:2015-12-11我要评论 这篇文章主要介绍了Python实现各种排序算法的代码示 ...

  3. free函数

    free函数 原型: void free(void *ptr) 功 能: 释放ptr指向的存储空间.被释放的空间通常被送入可用存储区池,以后可在调用malloc.realloc以及calloc函数来再 ...

  4. springmvc__SimpleUrlHandlerMapping(对访问地址进行加工,以键值对的形式)

    1.配置web.xml(这里配置url-pattern为/) <!-- 编码过滤器 --> <filter> <filter-name>characterEncod ...

  5. iOS开发UI篇—UIScrollView控件实现图片轮播

    iOS开发UI篇—UIScrollView控件实现图片轮播 一.实现效果 实现图片的自动轮播            二.实现代码 storyboard中布局 代码: #import "YYV ...

  6. css浮动(folat),清除浮动(clear)(另加两种清除浮动方式,总共三种清除浮动方式)

    css浮动(float) float是css样式,用于设置标签的居左浮动和居右浮动,浮动后的元素不属于html文档流,需要用清除浮动把文档拽回到文档流中 浮动值: left:向左浮动 right:向右 ...

  7. C#导出excel

    public FileResult ExportExcels(string StartTime, string EndTime, string SendType) { List<SMSSExpo ...

  8. cocos2d-x 开头配置(Windows 平台)

    工欲善其事,必先利其器. 要使用 cocos2d-x 引擎,就要配置(或者安装)引擎,到 cocos2d-x 官网下载页下载引擎,官网给了2.x和3.x两个版本,我使用的是3.6的版本,3.x的版本类 ...

  9. c# 配置文件之configSections配置(二)

    在很多时候我们需要自定义我们自己的自定义App.config 文件,而微软为我们提供了默认的 System.Configuration.DictionarySectionHandler System. ...

  10. Asp.net MVC 视图(二)

    Razor视图引擎 使用C#语法的Razor视图文件扩展名为.cshtml:使用Visual Basic语法的Razor视图文件扩展名为.vbhtml.文件扩展名指出了Razor语法分析器的编码语言的 ...