2009-08-18 32 views
1

我在開發當前UI時遇到性能問題。但是,我想這個問題是一般的。爲asp.net grid獲取分頁數據的性能提高

我有一個簡單的asp.net網格頁面。網格將根據特定搜索條件顯示錶中的數據。而且,網格具有固定的頁面大小(比如10)。底部有尋呼機,可用於瀏覽黑白頁面。在後端,無論何時按下搜索按鈕,都會調用一個存儲過程來返回所需的數據。

存儲過程有像currentpageIndex,頁面大小,其他搜索條件,等這裏的參數是爲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. 有沒有其他有效的方法從數據庫中獲取分頁數據?

嗨丹,文章提供了一個新的洞察計算總行數。真的很有幫助。謝謝。

但是當數據很大時,仍然有比使用CTE更好的方法嗎?

更新:我發現幾個其他高性能approaches有效地獲取分頁記錄。

回答

1

SqlServerCentral上有一篇很好的文章,名爲SQL Server 2005 Paging – The Holy Grail,它顯示了一些用於服務器端分頁的技巧。不過,您需要註冊才能查看它。

我知道真的很大的結果集,然後像Google這樣的軟件將simply estimate將返回多少行,繞過需要得到所有返回的行數。

對不起,如果我不能給予更多的幫助。