解析数据库分页的两种方法对比(row_number()over()和top的对比)

 更新时间:2013年07月02日 10:02:47   作者:  
本篇文章是对数据库分页的两种方法对比(row_number()over()和top的对比)进行了详细的分析介绍,需要的朋友参考下
今天,老师带偶们复习了一下数据库中的分页,总体来说,今天感觉还不错,因为以前学的还没忘。好了,进入正题,
首先,说说top的方法
top方法其实就是将你要查的的页数的数据前得数据去掉 再取前几
例:
复制代码 代码如下:

 一页3条数据 取第一页的数据
-- 第一页
       select top 3 * from T_news;
                       取第五页的数据
--第五页
       select  top 3 * from T_News where id not in (select top (3*4) id from T_News)      --关键就在于not  in上 靠他来去掉前几页的数据
                    如果想要自己设定每页几条数据和看第几页的话也行 就多加个存储过程
create proc usp_fenye @geshu int,@yeshu int
as
 begin
   select top (@geshu) * from T_News where id not in (select top (@geshu*(@yeshu-1)) id from T_News)
 end

然后,我们再说说ROW_NUMBER()over()的方法
这个其实就是又给数据表加了一个列在用来确定数据是第几条
例:
复制代码 代码如下:

                       一页3条数据 取第一页的数据
   select * from (select *,ROW_NUMBER()over(order by id asc) as number from T_News ) as tb1
     where number between 1 and 3;
第五页的数据
 select * from (select *,ROW_NUMBER()over(order by id asc) as number from T_News ) as tb1
     where number between 3*4+1 and 3*5;
                       自己设定每页几条数据和看第几页
create proc usp_fenye @geshu int,@yeshu int
 as
   begin
     select * from (select *,ROW_NUMBER()over(order by id asc) as number from T_News ) as tb1
     where number between  @geshu*(@yeshu-1)+1 and @geshu*@yeshu;
   end

恩 就这样 这是我的理解 希望能给看得人带来帮助吧~

相关文章

  • mysql导出查询结果到csv的实现方法

    mysql导出查询结果到csv的实现方法

    下面小编就为大家带来一篇mysql导出查询结果到csv的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Mysql存储引擎MyISAM的常见问题(表损坏、无法访问、磁盘空间不足)

    Mysql存储引擎MyISAM的常见问题(表损坏、无法访问、磁盘空间不足)

    这篇文章主要介绍了Mysql存储引擎MyISAM的常见问题,针对表损坏、无法访问、磁盘空间不足等问题进行解决,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Redhat7.3安装MySQL8.0.22的详细教程(二进制安装)

    Redhat7.3安装MySQL8.0.22的详细教程(二进制安装)

    这篇文章主要介绍了Redhat7.3安装MySQL8.0.22(二进制安装),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-01-01
  • MySQL查询性能优化武器之链路追踪

    MySQL查询性能优化武器之链路追踪

    这篇文章主要介绍了MySQL查询性能优化武器之链路追踪,optimizer trace优化器追踪,可以帮助我们查看优化器生成执行计划的整个过程,以及做出的各种决策,包括访问表的方法、各种开销计算、各种转换等
    2022-08-08
  • Mysql查看版本号的几种方式

    Mysql查看版本号的几种方式

    这篇文章主要介绍了Mysql查看版本号的五种方式介绍,需要的朋友可以参考下
    2013-05-05
  • mysql从执行.sql文件时处理\n换行的问题

    mysql从执行.sql文件时处理\n换行的问题

    后来注意到,在上面我们恢复数据的时候是在没有连接数据的状态下执行的。
    2009-05-05
  • 深入mysql YEAR() MONTH() DAYOFMONTH()日期函数的详解

    深入mysql YEAR() MONTH() DAYOFMONTH()日期函数的详解

    本篇文章是对mysql中的YEAR() MONTH() DAYOFMONTH()日期函数进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • MySQL8新特性:降序索引详解

    MySQL8新特性:降序索引详解

    在数据库中我们一般都会对一些字段进行索引操作,这样可以提升数据的查询速度,下面这篇文章主要给大家介绍了关于MySQL8新特性:降序索引的相关资料,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧
    2018-07-07
  • workerman写mysql连接池的实例代码

    workerman写mysql连接池的实例代码

    在本篇文章中小编给大家分享的是一篇关于workerman写mysql连接池的实例代码内容,有需要的朋友们可以参考下。
    2020-01-01
  • 一文带你了解MySQL之连接原理

    一文带你了解MySQL之连接原理

    搞数据库一个避不开的概念就是Join,翻译成中⽂就是连接,相信很多小伙伴初学连接的时候有些一脸懵,理解了连接的语义之后又可能不明白各个表中的记录到底是怎么连起来的,所以本章就来学习连接的原理,需要的朋友可以参考下
    2023-05-05

最新评论