ASP.NET高性能分页

最近给分页快搞死,记得之前曾经发过修改DW ASP分页的方法,后来又写过手工打造的ASP分页,现在进入.NET当然要配合存储过程打造纯手工高性能分页了.

为什么会叫做高性能,为什么要手工打造,不使用.NET现有的分页控件呢?这个还要追溯到我修改DW ASP分页的时候,那个我还不怎么懂程序这个东西,只会修修补补,就更不要去谈什么性能问题.当时改的很心烦,接着叫我的私人技术总监张总帮我看看,当时张总就以一种不屑一顾的眼神往着我,说了句话:值得吗?

接着到我手工打造ASP分页,又搞不下去了,张总丢给我一堆.NET的代码:自己研究吧.然后又丢了一句话:用.NET做吧,几句话搞定,不用这个费神.

后来我发现以前的分页都是把整个数据集全部读取后再做分页处理的,一旦数据量过大,处理会十分缓慢,甚至服务器崩溃.然后就是以前的分页不能象游标一样滚动,总是固定在一组里面,不可能实现当前页码在中间的效果.

接着就要说.NET的分页控件了,确实几句话可以搞定,不过缺陷就是我发现的第一个问题,属于把数据全部读出再处理的那种,没有效率,所以终于开始动手,纯手工打造ASP.NET高性能分页.

首先是存储过程,只取出我需要的那段数据,如果页数超过数据总数,自动返回最后一页的纪录:

程序代码

set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: Clear
-- Create date: 2007-01-30
-- Description: 高性能分页
-- =============================================
Alter PROCEDURE [dbo].[Tag_Page_Name_Select]
-- 传入最大显示纪录数和当前页码
   @MaxPageSize int,
   @PageNum int,
-- 设置一个输出参数返回总纪录数供分页列表使用
   @Count int output
AS
BEGIN
   SET NOCOUNT ON;
  DECLARE
-- 定义排序名称参数
     @Name nvarchar(50),
-- 定义游标位置
     @Cursor int
-- 首先得到纪录总数
  Select @Count = count(tag_Name)
   FROM [viewdatabase0716].[dbo].[view_tag];
-- 定义游标需要开始的位置
   Set @Cursor = @MaxPageSize*(@PageNum-1)+1
-- 如果游标大于纪录总数将游标放到最后一页开始的位置
   IF @Cursor > @Count
   BEGIN
-- 如果最后一页与最大每次纪录数相等,返回最后整页
     IF @Count % @MaxPageSize = 0
     BEGIN
       IF @Cursor > @MaxPageSize
         Set @Cursor = @Count - @MaxPageSize + 1
       ELSE
         Set @Cursor = 1
     END
-- 否则返回最后一页剩下的纪录
     ELSE
       Set @Cursor = @Count - (@Count % @MaxPageSize) + 1
   END
-- 将指针指到该页开始
   Set Rowcount @Cursor
-- 得到纪录开始的位置
   Select @Name = tag_Name
   FROM [viewdatabase0716].[dbo].[view_tag]
   orDER BY tag_Name;
-- 设置开始位置
   Set Rowcount @MaxPageSize
-- 得到该页纪录
     Select *
     From [viewdatabase0716].[dbo].[view_tag]
     Where tag_Name >= @Name
     order By tag_Name
   Set Rowcount 0
END

时间: 2024-12-11 00:55:48

ASP.NET高性能分页的相关文章

ASP.NET 高性能分页代码_实用技巧

最近给分页快搞死,记得之前曾经发过修改DW ASP分页的方法,后来又写过手工打造的ASP分页,现在进入.NET当然要配合存储过程打造纯手工高性能分页了. 为什么会叫做高性能,为什么要手工打造,不使用.NET现有的分页控件呢?这个还要追溯到我修改DW ASP分页的时候,那个我还不怎么懂程序这个东西,只会修修补补,就更不要去谈什么性能问题.当时改的很心烦,接着叫我的私人技术总监张总帮我看看,当时张总就以一种不屑一顾的眼神往着我,说了句话:值得吗? 接着到我手工打造ASP分页,又搞不下去了,张总丢给我

ASP.NET和MSSQL高性能分页实例代码_MsSql

首先是存储过程,只取出我需要的那段数据,如果页数超过数据总数,自动返回最后一页的纪录: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Clear -- Description: 高性能分页 -- http://www.cnblogs.com/roucheng/ -- =================================

ASP.NET和MSSQL高性能分页实例代码

首先是存储过程,只取出我需要的那段数据,如果页数超过数据总数,自动返回最后一页的纪录: set ANSI_NULLS ON set QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: Clear -- Description: 高性能分页 -- http://www.cnblogs.com/roucheng/ -- =================================

通过 ASP 记录进行分页

分页 通过 ASP 记录进行分页 J.D. Meier 目录 -------------------------------------------------------------------------------- 1.简介 2.问题 3.解决方案 4.示例代码 5.分析 6.结论 -------------------------------------------------------------------------------- 简介 在 Active Server Page

ASP 通用文章分页函数(非记录集分页)

分页|函数|记录集 说明: 本函数为文章分页, 非记录集分页本函数实现将文章分页显示, 并以指定长度显示每一分页本函数实现不需指定 URL, 自动更替 URL本函数实现返回多个结果, 为: 分页链接-文章统计信息-文章内容, 由字典实现如果分页大小大于文章总大小, 分页链接将为空. 显示如:第1页 第2页 第3页 第4页 第5页 50,000字/页 1/5页 共235,289字正文... 注: 显示内容的三个元素可自由变更位置. 附注: 如果您是在查找 记录集分页函数, 鄙人以前也写过一个, 名

创建用于ASP.NET的分页控件

asp.net|创建|分页|控件 从程序员的角度来看,Microsoft SQL Server? 查询的最大缺陷之一就是返回的行数通常比应用程序的用户界面实际可以容纳的行数要多得多.这种尴尬情形经常将开发人员陷于困境.开发人员是应该创建一个非常长的页面,让用户花时间去滚动浏览,还是应该通过设置一个手动分页机制来更好地解决这个问题? 哪种解决方案更好,在很大程度上取决于要检索的数据的特性.由多个项目(如搜索结果)组成的较长列表,最好通过各页大小相等.每页相对较短的多个页面显示.由单个项目(如文章的

ASP记录集分页显示的实现

大家都知道在Dreamwerver中可以很方便地实现记录集的分页显示,但是生成的代码的确很庞大,影响了网页的显示速度,看起来条理也不是很清晰,那么,可不可以用简单的方式实现同样的功能呢?当然可以,笔者通过以下一些简单的代码就实现了记录集的分页显示,现在拿出来大家一起分享. 主要代码如下: <% If rs1.recordcount>0 Then ' 记录集不为空则处理记录 rs1.pagesize = 10 ' 设置每页显示的记录数 num=rs1.recordcount ' 记录总数 pag

Asp.Net MVC 分页、检索、排序整体实现

原文:Asp.Net MVC 分页.检索.排序整体实现     很多时候需要这样的功能,对表格进行分页.排序和检索.这个有很多实现的方式,有现成的表格控件.用前端的mvvm,用户控件.但很多时候看着很漂亮的东西你想进一步控制的时候却不那么如意.这里自己实现一次,功能不是高大全,但求一个清楚明白,也欢迎园友拍砖.前端是bootstrap3+jPaginate,后台基于membership.没什么难点.     先上效果图.            分页其实就是处理好 每页项目数.总项目数.总页数.当

ASP中实现分页显示的七种方法_应用技巧

在微软的ASP编程体系中,ADO对象的建立,使得从网页访问数据库成为一件易事,特别是ADO的Recordset对象使得控制数据的输出显示更为方便.自由.而在Visual InterDev6.0(以下简称VI6.0)中,由于Script Object Model(以下简称SOM).Design-Time Control(以下简称DTC)以及Data Environment Object Model(以下简称DEOM)等对象模型的引入,使网页对数据库的访问设计显得更为方便. 因为主题方面的原因,关于