Существует метод под названием «Метод поиска», о котором вы можете прочитать здесь . В соответствии с этим вам необходимо идентифицировать набор столбцов, который уникально идентифицирует каждую строку. Этот набор столбцов будет затем использоваться с предикатом при поиске в базе данных.
Ссылка, которую я упомянул, содержит несколько примеров, но вот еще одна, очень простая:
CREATE TABLE IF NOT EXISTS `docs` (
`id` int(6) unsigned NOT NULL,
`rev` int(3) unsigned NOT NULL,
`content` varchar(200) NOT NULL,
PRIMARY KEY (`id`,`rev`)
) DEFAULT CHARSET=utf8;
INSERT INTO `docs` (`id`, `rev`, `content`) VALUES
('1', '1', 'The earth is flat'),
('2', '1', 'One hundred angels can dance on the head of a pin'),
('1', '2', 'The earth is flat and rests on a bull\'s horn'),
('1', '3', 'The earth is like a ball.');
SELECT *
FROM `docs`
ORDER BY rev, id
LIMIT 2;
SELECT *
FROM `docs`
WHERE (rev, id) > (1, 2) # let's use the last row from the previous select with the predicate
ORDER BY rev, id
LIMIT 2;
SELECT *
FROM `docs`
WHERE (rev, id) > (3, 1) # same idea
ORDER BY rev, id
LIMIT 2;
Ссылка на SQLFiddle
Наличие индексов еще больше ускорит нумерацию страниц.
Надеюсь, это поможет.