2010-01-06 51 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