Пейджинг может быть вашим лучшим решением. Если вы используете SQL Server 2005 или выше, была добавлена новая функция. ROWNUMBER () :
WITH MyThings AS
(
SELECT ThingID, DateEntered,
ROW_NUMBER() OVER (ORDER BY DateEntered) AS 'RowNumber'
FROM dbo.Things
)
SELECT *
FROM ThingDetails
WHERE RowNumber BETWEEN 50 AND 60;
Существует пример Дэвида Хейдена, который очень полезен при демонстрации SQL.
Этот метод уменьшит количество возвращаемых записей, сократив общее время загрузки. Это означает, что вам придется сделать немного больше, чтобы отследить, где вы находитесь в последовательности записей, но это стоит усилий.
Стандартный метод разбиения на страницы требует, чтобы все возвращалось из базы данных и затем фильтровалось на среднем уровне, или на уровне клиента (с выделенным кодом), этот метод уменьшает записи до более управляемого подмножества.