В моей базе данных есть миллионы записей, и она используется на портале для отображения пользователю, а нумерация страниц выполняется с использованием смещения, а также данные сортируются по некоторому столбцу. Есть ли альтернативное решение для смещения и использования любого столбца индекса например, поле автоинкремента или уникальное поле, оно не работает, если мне приходится сортировать по другому столбцу, даже если строка удалена, она не возвращает ожидаемых результатов.
Я выполняю sql запросы в своем java-приложении, я попробовал способ, только добавив ограничение к моим запросам. Таким образом, это работает так, как смещение всегда будет равно нулю, а предел будет числом (предел + смещение) в соответствии с логикой разбиения на страницы
Пример: пользователь запрашивает 10 записей на странице и переходит на 51 страницу
Альтернативная логика: ограничение 10 смещение 500 -> предел = 510
Запросы выглядят как
select * from history limit 510 order by log_date;
поэтому с помощью absolute
метода ResultSet
я перехожу к номеру строки согласно указанному смещению и извлекаю результаты после этой строки
-- No of rows returned 510
rs.absolute(500);
while(rs.next()){
//store data in the object
}
но даже так я говорю базе данных, чтобы она возвращала 510 записей, и если пользователь переходит на последнюю страницу, он выбирает все строки, что будет очень неэффективно.