分页方法
?
在做查询统计时,如果遇到数据量很大的情况,往往需要采用分页的方式来显示数据。分页的方法主要有三种方式。 一、使用控件属性,比如.net中的GridView就有个AllowPaging,我们只需设为true就能提供分页显示。这个方法用起来简单,但是分页效率很低。其原理是系统把所有符合条件的数据都读入内存,控件选择某一页的数据显示在页面。不说也明白,这个方法只适合数据量很小的系统,数据越多,系统的效率越低。 二、写具有分页功能sql语句,在我们查询数据写sql时,把相应的分页参数包含在sql语句中。这个方法稍微有点复杂,但是相对第一种方法效率高多了。下面简单列举三种常用数据库的分页SQL语句的写法。 ??? ??1、sqlserver 查询第N到M条记录 ?????? 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 查询第N到M条记录 ?? SELECT * FROM (SELECT A.*,ROWNUM RN FROM T A WHERE ROWNUM <= M) WHERE RN >= N? ?----T是表名 ?? ???3、 mysql? 查询第N到M条记录 ?????? SELECT * FROM T LIMIT N,M-N? ?----T是表名 ?????? T不仅可以是表,还可以是视图或者查询的sql语句,不管用什么语言做开发,.net也好java也好,在写个方法供调用,即可完成简单的分页查询,实现起来还是蛮简单的。也不需要写存储过程,一个方法在整个系统里几乎都能用上。 三 写存储过程,在我们查询时,通过分页参数,调用存储过程,取得我们所需要的数据。这样大大的提高查询效率。不同的数据库都可以写相应通用的分页存储过程。 在我的blog就有个sqlserver的,适用于sql2000和sql2005? http://blog.csdn.net/kongxiangli/archive/2007/05/11/1604169.aspx mysql和oracle的分页存储过程有兴趣可以自己研究。 另外一点就是单纯的分页控件与分页效率是没有关系的。网上有很多的写得很好的分页控件,而且大多还带有原码。有兴趣的自己可以研究。 最后说明一点,文章在细节上不一定完善。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |