Oracle、MySql、SQLServer 数据库中分页查询中的关键字总结

本文详细介绍了MySQL、SQL Server 2005及Oracle数据库中实现分页查询的方法。MySQL利用LIMIT关键字,SQL Server 2005后采用ROW_NUMBER()函数,而Oracle则提供了ROWNUM及ROW_NUMBER()两种方式,并对比了它们的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<span style="color: rgb(0, 0, 0); font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; "><strong style="background-color: rgb(255, 255, 255);">(一)、</strong></span><span style="font-family: Tahoma, Verdana, Geneva, Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255); "><strong> mysql的分页查询:  mysql的分页查询是最简单的,借助关键字<span style="color:#ff0000;">limit</span>即可实现查询,查询语句通式:</strong></span>

(二)、sqlserver2005的分页查询:在sqlserver2005之前一直借助top关键字来实现分页查询,不过效率低,在sqlserver2005及其之后的版本都使用row_number()解析函数来完成分页查询,

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

  1、ROWNUM查询分页通式:

/*
* 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;


  2、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


(四)、结论

     首先, 我们知道在ROWNUM查询的方式中,在第二层的sql语句中有个"where ROWNUM<firstIndex+pageSize",根据oracle的原则,第二层查询语句会嵌入到最内层中进行查询,也就是说,最开始执行的查询语句类似于:select * from wyuse where rownum<(firstIndex+pageSize) order by id asc,从数据表中查询出(firstIndex+pageSize)条记录,所以如果这个值很小的话,效率会很好,如果对于大数据量的表单,这个值如果是上千,必然效率很低!

     其次,采用row_number()函数效率高于ROWNUM,原因在于,row_number()方式可能通过简化可以少一层嵌套,但是对于大数据查询,差距微乎其微!

      最后,总结一下,myssql的查询最简洁高效,其次是oracle 的row_number()函数!



参考文献:

1、http://www.cnblogs.com/wangyong/p/3396333.html

2、http://hellosoftcc.blog.163.com/blog/static/174546935201131431254853/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值