2010-01-06 121 views
4

我正在處理一個小型項目,需要gridview分頁達到100k記錄。我有什麼方法可以改善表現。我嘗試使用Temp表來使用sql server,但它仍然有點慢。改善gridview的分頁性能?

有什麼想法嗎?

回答

9

您可以添加一個存儲過程,該過程只返回一定範圍的行。讓頁面跟蹤當前頁面的內容,並只請求下一個x或前一個x行。

例如:

@firstRow int, 
@lastRow int 
select ROW_NUMBER() over (order by [MyField]) as rowNum, * 
from [MyTable] 
where rowNum between @firstRow and @lastRow 
+0

得愛ROW_NUMBER()函數。 – ProfK 2010-01-06 06:23:20

+0

但是,由於按順序排列,Row_Number()在較高記錄中會很慢。例如(在100000和100010之間)比(在90000和90000010之間)慢。你有什麼想法? – 2012-02-06 17:52:41

1

不知道TJ凱利的想法會工作。下面是一個改進:

select * from 
(
select ROW_NUMBER() over (order by [MyField]) as rowNum, * 
from [MyTable] 
) 
as TableWithRows 
Where Row<=20 and Row>=10 

將返回行10到20 您可以通過從

0

修正查詢 選擇*將選擇TOP [LASTROW]前ROW_NUMBER()函數進一步提高它( 選擇ROW_NUMBER()以上(由[MyField的]順序)的rowNum,* 從[MyTable的] ) 作爲TableWithRows 凡ROWNUM < = 20和ROWNUM> = 10