Если вы хотите вернуть постраничные результаты в SQL Server, лучше всего использовать функцию ROW_NUMBER ().Вот пример, который даст вам 400-410-й результаты:
SELECT ID, Name, Date
FROM (SELECT TOP 410 ROW_NUMBER() OVER (ORDER BY id)
AS Row, ID, Name, Date FROM MyTable)
AS MyPagedTable
WHERE Row >= 400 AND Row <= 410
Убедитесь, что у вас есть правильные индексы на месте.Если у вас возникают проблемы с производительностью, я бы порекомендовал взглянуть на план выполнения и посмотреть, где находятся проблемные области.