Я использую эту технику для нумерации страниц. Я беру не все строки. Например, если на моей странице должны отображаться 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
Это будет наименьшей нагрузкой на систему.