获取asp.net网格的分页数据的性能改进

时间:2009-08-18 20:02:42

标签: asp.net database performance grid paging

我在当前UI的开发中遇到了性能问题。我想这个问题无论如何都是一般性的。

我有一个简单的asp.net网格页面。网格将根据特定搜索条件显示表格中的数据。此外,网格具有固定的页面大小(例如10)。底部有寻呼机,可用于浏览黑白页面。在后端,每按一次搜索按钮,就会调用一个存储过程,返回所需的数据。

存储过程具有currentpageIndex,pagesize,其他搜索条件等参数。这是sp的伪代码:

-- SP begins
-- calculate the page index range to return required using current page index and page size
-- query the table in a CTE and do all filtering. Also calculate row numbers so that
-- correct record range can be returned. 
-- use the cte to return the correct record based on the row number calculated in CTE
-- SP ends

我在这种方法中遇到以下问题/查询

  1. 当Db表大小很大(比如1000万条记录)时,性能会下降,这种方法变得不切实际。
  2. 使用表变量或临时表更有用吗?
  3. 有没有其他有效的方法从数据库中获取分页数据?
  4. 嗨Dan,这篇文章提供了计算总行数的新见解。真有帮助。谢谢。

    但是,当数据量很大时,还有比使用CTE更好的方法吗?

    更新:我发现很少有其他高性能approaches可以有效地获取分页记录。

1 个答案:

答案 0 :(得分:1)

在SqlServerCentral上有一篇名为SQL Server 2005 Paging – The Holy Grail的好文章,它展示了一些服务器端分页技术。但是,您需要注册才能查看它。

我知道对于非常大的结果集,那么像谷歌这样的软件会simply estimate将返回多少行,从而无需计算返回的所有行数。

抱歉,如果我无法提供更多帮助。