烈火网(LieHuo.Net)教程 混在web上,那有不同分页打交道的,分页偏偏又是一个硬伤,总是不能找到一个通用的解决方法,即使用上分页自定义/用户控件感觉还是少了点什么,性能.
web页面一次一般显示10行数据为好,但往往很多时候我们从数据库中查出来上万条数据,这个时候我们要在上万条数据中显示10条,那就必须分页.分页的第一问题就是分页数据.
1.分页数据:分页的数据分为两种,一种是在数据库中只取需要的10条数据,这也是性能提升的标致,一种是全盘拖出,放到程序缓存中再用程序来分页.
1.1 第一种取数据方式有select top [PageSize] * from [Table] where id not in(select top [CurrentPage-1] [PageSize] id from [Table] ----用于access,mssql当中
另一种是存储过程,这也是最快的取数据方式
以下为引用的内容: ALTER PROCEDURE GetAuthors @PageIndex int, @PageSize int AS BEGIN -- Set the page bounds DECLARE @PageLowerBound int DECLARE @PageUpperBound int DECLARE @TotalRecords int SET @PageLowerBound = @PageSize * (@PageIndex-1) SET @PageUpperBound = @PageSize*@PageIndex-1 -- Create a temp table TO store the select results CREATE TABLE #PageIndexForAuthors ( IndexId int IDENTITY (0, 1) NOT NULL, au_id varchar(11), au_lname varchar(40), au_fname varchar(20), phone char(12), address varchar(40), city varchar(20), state char(2), zip char(5), contract bit ) -- Insert into our temp table INSERT INTO #PageIndexForAuthors (au_id ,au_lname,au_fname,phone,address,city,state,zip,contract) SELECT * FROM authors ORDER BY au_id SELECT @TotalRecords = @@ROWCOUNT SELECT * FROM #PageIndexForAuthors WHERE IndexId between @PageLowerBound AND @PageUpperBound ORDER BY au_id RETURN @TotalRecords END |
GO上面这段存储过程是仿微软的写法,微软在Membership里面采用也是这存储过程分页.
零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。