Улучшение производительности пейджинга для gridview?

Я работаю над небольшим проектом, который требует подкачки сетки до 100 тыс. записей. как я могу улучшить производительность. Я попытался просмотреть страницу с помощью сервера sql с таблицей Temp, но он все еще немного медленнее.

Есть идеи?


person ksk    schedule 06.01.2010    source источник


Ответы (3)


Вы можете добавить хранимую процедуру, которая будет возвращать только диапазон строк. Заставьте страницу отслеживать текущую страницу, на которой вы находитесь, и запрашивать только следующие x или предыдущие x строк.

Например:

@firstRow   int,
@lastRow    int
select ROW_NUMBER() over (order by [MyField]) as rowNum, * 
from [MyTable] 
where rowNum between @firstRow and @lastRow 
person Tj Kellie    schedule 06.01.2010
comment
Мне нравится эта функция ROW_NUMBER(). - person ProfK; 06.01.2010
comment
Но Row_Number() будет медленным в верхних записях из-за порядка. например (между 100000 и 100010) медленнее, чем (между 90000 и 90000010). что вы думаете об этом? - person Raymond Morphy; 06.02.2012

Не уверен, что идея Tj Kellie сработает. Вот улучшение:

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

Возвращает строки с 10 по 20. Вы можете улучшить его, добавив select TOP [LastRow] перед функцией ROW_NUMBER().

person Faruz    schedule 06.01.2010

Исправление в запросе select * from ( select ROW_NUMBER() over (order by [MyField]) as rowNum, * from [MyTable] ) as TableWithRows Где RowNum‹=20 и RowNum>=10

person Fazal    schedule 19.01.2010