加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

分页方法

发布时间:2020-12-12 15:47:46 所属栏目:MsSql教程 来源:网络整理
导读:? 在做查询统计时,如果遇到数据量很大的情况,往往需要采用分页的方式来显示数据。分页的方法主要有三种方式。 一、使用控件属性,比如 .net 中的 GridView 就有个 AllowPaging ,我们只需设为 true 就能提供分页显示 。 这个方法用起来简单,但是分页效率很
?

在做查询统计时,如果遇到数据量很大的情况,往往需要采用分页的方式来显示数据。分页的方法主要有三种方式。

一、使用控件属性,比如.net中的GridView就有个AllowPaging,我们只需设为true就能提供分页显示这个方法用起来简单,但是分页效率很低其原理是系统把所有符合条件的数据都读入内存,控件选择某一页的数据显示在页面不说也明白,这个方法只适合数据量很小的系统,数据越多,系统的效率越低

二、写具有分页功能sql语句,在我们查询数据写sql时,把相应的分页参数包含在sql语句中。这个方法稍微有点复杂,但是相对第一种方法效率高多了。下面简单列举三种常用数据库的分页SQL语句的写法。

??? ??1sqlserver 查询第NM条记录

?????? sql2000

select top M * from T where id not in (select top N id from T order by ID desc) ORDER BY ID DESC ---T是表名,ID是主键 排序字段可以换。

sql2005 select * from (select *,row_number() over (order by id) as row?) ?from T where row? between N and M ---T是表名,ID是主键 排序字段可以换。

????? 2 oracle 查询第NM条记录

?? SELECT * FROM (SELECT A.*,ROWNUM RN FROM T A WHERE ROWNUM <= M) WHERE RN >= N? ?----T是表名

?? ???3 mysql? 查询第NM条记录

?????? SELECT * FROM T LIMIT N,M-N? ?----T是表名

?????? T不仅可以是表,还可以是视图或者查询的sql语句,不管用什么语言做开发,.net也好java也好,在写个方法供调用,即可完成简单的分页查询,实现起来还是蛮简单的。也不需要写存储过程,一个方法在整个系统里几乎都能用上。

写存储过程,在我们查询时,通过分页参数,调用存储过程,取得我们所需要的数据。这样大大的提高查询效率。不同的数据库都可以写相应通用的分页存储过程

在我的blog就有个sqlserver的,适用于sql2000sql2005? http://blog.csdn.net/kongxiangli/archive/2007/05/11/1604169.aspx

mysqloracle的分页存储过程有兴趣可以自己研究。

另外一点就是单纯的分页控件与分页效率是没有关系的。网上有很多的写得很好的分页控件,而且大多还带有原码。有兴趣的自己可以研究。

最后说明一点,文章在细节上不一定完善。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读