前台缓存分页,如果数据很多的话会变得很慢,而且不方便,所以就在这里把数据库的分页进行集合。
工具/原料
sqlserver2008
分页第一种
1、首先 建一张测试表create database Testgouse Testgocreate Table UserInfo( userid int identity(1,1) primary key, username nvarchar(10) not null)

3、--查询第三页的数据--数据库模拟前台传过来的参数declare @pagesize int--定义显示条数declare @currentPage int--定义当前页set @pagesize = 3set @currentPage = 3--分页查询语句select top (@pagesize) * from Userinfowhere useridnot in(select top(@pagesize*(@currentPage-1))useridfrom UserInfo)

4、--第一页:因为不需要对数据过滤,--所以只取PagSize数量的记录--第二页:步骤:--1.取前两页的数据 selct top @pagesize *@currentPage--2.过滤掉第一页的数据@pagesize*(@currentPage-1)
分页第二种
1、--第二种方法:如果ID是连续,完全不用top--直接用id就可以--建表格 数据从UserInfo拿过来create table #tempUserInfo( id int identity(1,1) primary key, userid int not null, username nvarchar(10) not null)--插入数据insert into #tempUserInfoselect * from UserInfo

分页第三种
1、--第三种--rownumber()函数是sql server2005才有declare @pagesize intdeclare @currentPage intset @pagesize = 3set @currentPage = 3--查询语句select * from (select ROW_NUMBER() over (order by userid) as HangHao,*from UserInfo) pageduserinfowhere HangHao between(@currentPage -1)*@pagesize +1and @pagesize * @currentPage

2、--效率问题:第一张绝对比第三种低。--理论上第二种效率最高,但不推荐用,--要实现的话,一般是用存储过程个人推荐第三种