Asp.net 通用万级数据分页代码[修正下载地址]

 更新时间:2008年10月07日 13:48:58   转载 作者:  
在万级数据量下的分页代码
1.主题,Asp.net环境下,通用的数据分页(包括Oracle,SqlServer,DB2...)
很久以前,就想做一个通用点的数据分页组件,但苦于一直没有充足的时间,所以迟迟没有实现(当然,主要是因为有一定的难度,要处理视图状态,回传事件,自绘等...),"十一"期间,陪女朋友去了躺"湘西",白天游山玩水,晚上无事,吃吃当地的夜宵,无聊之际,google了一把Oracle的数据分页,竟然没有一个完整的关于Asp.net + Oracle数据分页的例子,要不就是有版本问题,索性决定自己弄一个.
2.环境
IDE;vs2008+asp.net2.0 or 3.0+Oracle9i
Oracle测试数据;41万多条
带宽;网通说是有2M的带宽,其实TNND只有100多KB
3.原理
利用Oracle9i的RowNum获取我们想要的数据,如图3.1
复制代码 代码如下:

public IEnumerable GetPageSqlByOracle(string sql, int startRowIndex, int maximumRows, string orderBy)
{
string sqlFormat = string.Format("select * from (select rownum rn, pageTable.* from {0} pageTable where rownum <={1}) where rn>{2}", sql, startRowIndex + maximumRows, startRowIndex);

return ydjwOracleConn.RetriveDataSet(sqlFormat).Tables[0].DefaultView;
}

startRowIndex表示开始索引,maximumRows表示要获取的每页记录数目.

然后把分页后的数据绑定到ObjectDataSource组件,如下图

    

4.效果

 

4.1 支持多排序,比如时间,比如身份证明号码等

4.2 41万多条数据

4.3 单条件查询,第一次用时1.547秒

4.4 第二次,用时1.515秒

第三次差不多,就不贴了.

4.5 看看不带条件的查询,一次把41万条数据全部查询出来使用的时间

可以看到,不带条件查询41万条数据,第一次用时1.265秒.


4.6 可以看到不带条件查询41万条数据,第二次用时1.156秒
4.7 可用SqlServer,或者Db2等数据库代替,只需要修改 图3.1获取数据的方法,其他地方不用动.
5.需要注意的地方
5.1 记得数据量上万时,一定要加索引,否则要等得"花谢花开".
5.2 ObjectDataSource的所有参数名称,一定要和绑定的方法参数名称,顺序一致.
5.3 能用缓存的,尽量用缓存
5.4 SqlServer的分页算法,就不说了,替换一下图3.1的方法就行
5.5 因为数据库文件实在太大,不方便下载,有兴趣的朋友自己弄一张表就OK,加上webconfig中的数据库连接配置
6.下载
测试Demo下载 http://xiazai.jb51.net/200810/yuanma/TestDataBindControlls.rar 【已修正】
7.后话
该说的都说了,希望对大家能有所帮助启发,还有就是此测试Demo还没有加缓存,有兴趣的朋友可以加上,欢迎大家讨论,批评,指导...

相关文章

  • asp.net中button控制先执行js再执行后台程序的方法

    asp.net中button控制先执行js再执行后台程序的方法

    这篇文章主要介绍了asp.net中button控制先执行js再执行后台程序的方法,涉及button控件与js的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-01-01
  • asp.net Urlrewriter在虚拟主机上的使用方法

    asp.net Urlrewriter在虚拟主机上的使用方法

    在网上看到,很多朋友在asp.net中做urlrewrite,用的是HttpHandle Server.Transfer的方法。其实这种方法是错误的。
    2009-12-12
  • ASP.NET MVC使用Ninject的方法教程

    ASP.NET MVC使用Ninject的方法教程

    这篇文章主要给大家介绍了关于ASP.NET MVC使用Ninject的相关资料,文中通过示例代码介绍的非常详细,对大家啊的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • 详解.net mvc session失效问题

    详解.net mvc session失效问题

    这篇文章主要介绍了.net mvc session失效问题,本文通过问题分析,解决过程分步骤给大家介绍的非常详细,需要的朋友可以参考下
    2016-09-09
  • asp.net 面试 笔试题目[附答案]

    asp.net 面试 笔试题目[附答案]

    收集并整理自网络,实时更新,希望大家找到合适的工作。
    2009-05-05
  • Asp.net MVC定义短网址的方法

    Asp.net MVC定义短网址的方法

    这篇文章主要介绍了Asp.net MVC定义短网址的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • VS2010制作第一个简单网站

    VS2010制作第一个简单网站

    这篇文章主要为大家介绍VS2010如何制作第一个简单网站,和大家一起学习 动态网站开发技术,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 详解ASP.NET页面生命周期

    详解ASP.NET页面生命周期

    这篇文章主要为大家介绍了ASP.NET页面生命周期,熟悉页面生命周期非常重要,这样我们才能在生命周期的合适阶段编写代码,需要的朋友可以参考下
    2015-12-12
  • 使用ASP.NET中关于代码分离的实例分享

    使用ASP.NET中关于代码分离的实例分享

    本文主要简单介绍了如何让代码分离阅读起来更方便,不至于代码过于臃肿,这里举一反三,希望对大家有所帮助。
    2016-04-04
  • Asp.Net的FileUpload类实现上传文件实例

    Asp.Net的FileUpload类实现上传文件实例

    这篇文章主要介绍了Asp.Net的FileUpload类实现上传文件的方法,以实例形式讲述了上传文件类的具体实现方法,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11

最新评论