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

最近简单的对oracle,mysql,sqlserver2005的数据分页查询作了研究,把各自的查询的语句贴到脚本之家平台供大家参考

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

(一)、mysql的分页查询

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

?

1

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

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

查询(1-20)这20条记录
mysql oracle和sqlserver分页查询实例解析

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

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

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

(二)、sqlserver2005的分页查询

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

?

1

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

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

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

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

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

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

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

(三)、oracle分页查询

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

①ROWNUM查询分页通式:

?

1

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

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

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

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

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

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

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

?

1

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)

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

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

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

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

总结

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

版权声明:本文(即:原文链接:https://www.qin1qin.com/catagory/19984/)内容由互联网用户自发投稿贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 630367839@qq.com 举报,一经查实,本站将立刻删除。

(0)
上一篇 2022年9月8日 上午10:49
下一篇 2022年9月8日 上午10:49
软件定制开发公司

相关阅读

发表回复

登录后才能评论
通知:禁止投稿所有关于虚拟货币,币圈类相关文章,发现立即永久封锁账户ID!