讨论 使用SQL实现分页
背景:
检索有几十万条记录的表显示在页面上。
把所有记录也就是含有几十万条记录的结果集直接Fill到DataSet里面。
然后使用DataGrid的分页功能来显示几十条记录。
几十万条记录的结果集从MSSQL服务返回到Asp.Net服务就需要花费比较长的时间,Asp.Net把这几十万条记录再填充到DataSet里面要不知要花多少时间,然后DataGrid检索绑定DataTable要需要花多少时间。根据一般为提高服务速度的算法,短任务优先执行的原则。可以想象请求返回几十万条记录的线程在MSSQL和Asp.Net服务里面的优先级别比较低,更增加响应时间。更要命的是,Asp.Net的程序很多PostBack,导致提交一次,就要把上面的事情在忙一次。这样服务器很容易崩溃。
解决方法:
1。 有不少人提出的解决方案是使用存储过程实现分页,这是一个好办法。
2。 SQL语句实现分页的功能。 参考:《构建Web解决方案——应用Asp.net和ado.net》 我把这个例子贴出来,大家来讨论一下利弊。