Я использую эту технику для нумерации страниц. Я не выбираю все строки. Например, если моя страница должна отображать первые 100 строк, я выбираю только 100 с предложением where. Выходные данные SQL должны иметь уникальный ключ.
Таблица имеет следующее:
ID, KeyId, Rank
Один и тот же ранг будет присвоен более чем одному ключевому идентификатору.
SQL равно select top 2 * from Table1 where Rank >= @Rank and ID > @Id
Впервые я передаю 0 для обоих. Второй проход 1 и 14. Третий проход 2 и 6 ....
Значение десятой записи Rank & Id передается следующему
11 21 1
14 22 1
7 11 1
6 19 2
12 31 2
13 18 2
Это будет иметь наименьшую нагрузку на систему