Linq to SQL будет использовать подход Row_Number, как описано в статье, и в целом он будет иметь эффективные пейджинговые запросы к базе данных.
Однако существуют ограничения на объем данных, которые SQL может отображать для вас и при этом быть быстродействующими.
Если у вас есть таблица с миллионами или строками, функции подкачки должны ограничивать объем запрашиваемых данных, а затем выполнять разбиение на страницы с помощью подхода Row_Number.
Скажем так, вы хотите разместить запрос на этом:
Select column1, column2, column3 from table1 where column1 > 100
Теперь допустим, что возвращается 1 000 000 строк. SQL Server по-прежнему должен выполнять свою процедуру подкачки более миллиона строк. Это займет несколько секунд, чтобы вывести на экран результирующий набор исходного запроса. И он должен делать это для каждого запроса.
Чтобы обеспечить поддержание производительности, необходимо ограничить количество возвращаемых записей, которые SQL будет отображать.
Select TOP 10000 column1, column2, column3 from table1 where column1 > 100
Теперь, хотя 1 миллион записей соответствуют запросу, только 10000 будут разбиты на страницы, и это ускорит ответ до доли секунды. В этом сценарии пользователь должен быть уведомлен о том, что запрос, который он выполнил к базе данных, был слишком широким, и ему необходимо сузить критерии поиска, поскольку не все возможные результаты были результатами.