mysql oracle和sqlserver分页查询实例解析

 更新时间:2017年10月10日 14:46:20   作者:动力节点  
最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴到脚本之家平台供大家参考

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

(一)、mysql的分页查询

mysql的分页查询是最简单的,借助关键字limit即可实现查询,查询语句通式:

selecto.*from(sql)o limit firstIndex,pageSize

如下面的截图,每页显示的记录数为20:

查询(1-20)这20条记录

查询(21-40)这20条记录


mysql的分页查询就这么简单......

(二)、sqlserver2005的分页查询

在sqlserver2005之前一直借助top关键字来实现分页查询,不过效率低,在sqlserver2005及其之后的版本都使用row_number()解析函数来完成分页查询,效率有了很大的提高,不过sql语句比较复杂,下面给出分页查询的通式:

selecttoppageSizeo.*from(selectrow_number()over(orderbyorderColumn)asrownumber,*from(sql)asowhererownumber>firstIndex;

下面看截图,每页显示20条记录数:

查询(1-20)这20条记录

查询(21-40)这20条记录

知道了sqlserver中的row_number函数,分页也就简单了.....

(三)、oracle分页查询

接下来重点说说oracle的分页查询,oracle的分页查询方法相对来说要多点,ROWNUM、row_number(),今天主要将两种效率稍好的分页查询语句。

①ROWNUM查询分页通式:

select*from(selecta.*,ROWNUMrn from(sql)a whereROWNUM<=(firstIndex+pageSize))wherern>firstIndex

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

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



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

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

select*from(select*from(selectt.*,row_number()over(orderbyorderColumn)asrownumberfrom(sql)t) p wherep.rownumber>firstIndex)whererownum<=pageSize

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

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



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


在ROWNUM查询的方式中,在第二层的sql语句中有个"where ROWNUM<(firstIndex+pageSize)order by idasc,从数据表中查询出(firstIndex+pageSize)条记录,所以如果这个值很小的话,效率会很好,如果对于大数据量的表单,这个值如果是上千,比如:select* from wyuse where rownum<(5000) order by idasc,这样一开始会选出5000条记录,效率自然会慢很多....

总结

以上所述是小编给大家介绍的mysql oracle和sqlserver分页查询,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!

相关文章

  • MYSQL随机抽取查询 MySQL Order By Rand()效率问题

    MYSQL随机抽取查询 MySQL Order By Rand()效率问题

    MYSQL随机抽取查询:MySQL Order By Rand()效率问题一直是开发人员的常见问题,俺们不是DBA,没有那么牛B,所只能慢慢研究咯,最近由于项目问题,需要大概研究了一下MYSQL的随机抽取实现方法
    2011-11-11
  • MySQL数据库查询之多表查询总结

    MySQL数据库查询之多表查询总结

    最近遇到了多表查询的需求,也称为关联查询,指两个或更多个表一起完成查询操作,下面这篇文章主要给大家介绍了关于MySQL数据库查询之多表查询的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-08-08
  • MySQL使用中遇到的问题记录

    MySQL使用中遇到的问题记录

    本文给大家汇总介绍了作者在mysql的使用过程中遇到的问题以及最终的解决方案,非常的实用,有需要的小伙伴可以参考下
    2017-11-11
  • MySQL获取二维数组字符串的最后一个值的实现代码

    MySQL获取二维数组字符串的最后一个值的实现代码

    这篇文章主要介绍了MySQL获取二维数组字符串的最后一个值的实现,文中有详细的代码示例供大家参考,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-04-04
  • Ubuntu 18.04安装mysql 5.7.23

    Ubuntu 18.04安装mysql 5.7.23

    这篇文章主要为大家详细介绍了Ubuntu 18.04安装mysql 5.7.23的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • processlist命令 查看mysql 线程

    processlist命令 查看mysql 线程

    processlist命令的输出结果显示了有哪些线程在运行,可以帮助识别出有问题的查询语句,两种方式使用这个命令。
    2009-04-04
  • 21条MySQL优化建议(经验总结)

    21条MySQL优化建议(经验总结)

    这篇文章主要介绍了21条MySQL优化建议,均来自个人的实战经验总结,需要的朋友可以参考下
    2014-07-07
  • VS2022连接数据库MySQL并进行基本的表的操作指南

    VS2022连接数据库MySQL并进行基本的表的操作指南

    鉴于MySQL数据库的流行与强大,决定多学习使用,下面这篇文章主要给大家介绍了关于VS2022连接数据库MySQL并进行基本的表的操作指南,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-05-05
  • centos7通过yum安装mysql的方法

    centos7通过yum安装mysql的方法

    这篇文章主要介绍了centos7通过yum安装mysql的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • Mysql存储过程、触发器、事件调度器使用入门指南

    Mysql存储过程、触发器、事件调度器使用入门指南

    存储过程(Stored Procedure)是一种在数据库中存储复杂程序的数据库对象。为了完成特定功能的SQL语句集,经过编译创建并保存在数据库中,本文给大家介绍Mysql存储过程、触发器、事件调度器使用入门指南,感兴趣的朋友一起看看吧
    2022-01-01

最新评论