У меня есть требование для разбивки на страницы данных (элементов), полученных из базы данных. Пользовательский интерфейс также содержит параметры поиска и объем данных, заказ также зависит от критериев поиска.Разбиение данных: java + oracle sql
Предположим, что клиент отправил запрос с некоторыми критериями поиска и получил 60 результатов. Клиент видит элементы от 1 до maxPageSize (по умолчанию 25). Если запрошена 2-я страница - будет показано 26-50 элементов. Проблема в текущий момент. Я не могу получить количество максимальных результатов и не могу отобразить число maxPage.
Я вижу 2 решения этой проблемы:
- базы данных Запрос второй раз с теми же параметрами, но без пагинацией и получить количество пунктов.
- Извлечь все элементы из базы данных, фильтровать их по внутреннему коду по критериям поиска и отправлять клиенту.
Вопросов:
1) Какие из операций является менее дорогостоящим в целом?
2) Что еще можно сделать для решения такого рода задач, если есть лучшее решение?
P.S. внутренний код, написанный на Java, запросы отправляются через JDBC в Oracle 11g DB.
--- EDIT ---
Я решил эту проблему следующим образом:
WITH FINAL_RESULT AS
(SELECT SORTED_ITEMS.*,
ROWNUM RN
FROM (sorted basic query with searches))
SELECT FINAL_RESULT.*,
(SELECT COUNT(*) FROM FINAL_RESULT) ITEMS_COUNT
FROM FINAL_RESULT
WHERE RN BETWEEN ? AND ?
Почему вы не можете получить общее количество результатов? Но что еще, зачем вам это нужно? Просто запросите 26 результатов, и если вы вернетесь назад 26, сделайте следующую кнопку видимой, иначе оставьте ее серым. –
Дизайн на FE требует разбиения на страницы, как 1, 2, 3 ... 50 –