Никто не захочет пролистывать тысячи страниц; Ваше веб-приложение может быть улучшено за счет улучшения поиска и фильтрации.
В любом случае, если вы хотите узнать, сколько страниц, вам нужно сосчитать все строки:
SELECT count(*) FROM Logs;
И если вы хотите узнать, на какой странице вы находитесь, вам нужно посчитать, сколько строк перед текущей:
SELECT count(*) FROM Logs WHERE date < [first on current page];
Функции «next» и «previous» работают совершенно противоположно друг другу: вам нужно отслеживать последнюю / первую строку текущей страницы, и вы должны выбрать следующие 100 строк с большей / меньшее значение:
SELECT * SELECT *
FROM Logs FROM Logs
WHERE date > [last on current page] WHERE date < [first on current page]
ORDER BY date DESC ORDER BY date ASC
LIMIT 100; LIMIT 100;
(У второго запроса есть интересная складка возврата строк в обратном порядке, но это не должно быть проблемой.)
И если вы хотите перейти на определенную страницу, самый простой способ узнать первое значение даты на этой странице - это OFFSET:
SELECT date
FROM Logs
ORDER BY date ASC
OFFSET [page*100]
LIMIT 1;
(Этот запрос должен будет пройти через эти строки, но если столбец проиндексирован, по крайней мере, он не должен читать никакие данные таблицы.)