Существует два возможных обходных пути (для этого используется начало 201, страницы 100):
SQL
SELECT TOP 100 * FROM MyTable WHERE ID > 200 ORDER BY ID
LINQ to SQL
var MyRows = (from t in db.Table
order by t.ID ascending
select t).Skip(200).Take(100)
Если ваше поле идентификатора имеет кластерный индекс, используйте первый. Если нет, то и то, и другое займет одинаковое количество времени (LINQ возвращает 500 000 строк, затем пропускает, а затем занимает).
Если вы сортируете что-то, что НЕ является ID, и у вас есть это проиндексировано, используйте ROW_NUMBER()
.
Редактировать : Поскольку ОП не сортирует по идентификатору, единственное решение - ROW_NUMBER()
, это пункт, который я поставил в конце.
В этом случае таблица не индексируется, поэтому см. здесь , чтобы узнать, как индексировать для повышения производительности запросов.