Я работаю над приложением Java-EE, и я фильтрую данные на html-страницу в качестве результатов поиска ключевых слов. Могут быть миллионы записей, но я не хочу сразу же выводить их всех на передний план. Но в то же время мне нужно знать количество записей для разбивки на страницы. Любые идеи для достижения этого без значительного сетевого трафика? База данных - Oracle SQL 11g. Программа соответствует рамкам struts 1.3.Индексирование и разбиение на страницы
ответ
Найдено ответ и он работает :)
SELECT * FROM
(
SELECT a.*, rownum r__
FROM
(
SELECT CATEGORY.*,rownum FROM CATEGORY
ORDER BY CATNAME ASC
) a
WHERE rownum < ((pageno * pagesize) + 1)
)
WHERE r__ >= (((pageno-1) * pagesize) + 1)
Вы определенно не должны отправлять весь результат запроса клиенту. Вы можете сделать 2 запросы:
- получить число результатов, вы можете использовать
COUNT
- получить выбранные записи, например, страница 1 - записи от 1 до 30.
Спасибо, что ответили. Разве он не принимает одинаковое количество времени при получении количества строк с использованием count и при извлечении всех записей? – Bhugy
лучшего способа, чтобы создать метод в вашем DAO, которые, как дополнительные параметры запуск & конца, например:
getCustomers(String keyword, int start,int end){
// get all customers
// sublist the result and get the data from start index to end index
// Or U cane use a query using LIMIT
}
в контроллере у сделают почти то же самое и u даст начальный и конечный параметры через запрос POST или GET
@RequestMapping(value = "/sublistedCustomers", method = RequestMethod.GET)
public String getSublistedCustomers(@RequestParam("end") final String keyword,@RequestParam("start") final int start,@RequestParam("end") final int end){
model.addAttribute("cutomersResult",yourDAO.getCustomers(keyword,start,end));
возвращение «ваш-вид»; }
теперь у вас есть часть записи клиентов на файл JSP и до вас, чтобы решить, как отобразить этот sublisted результат :)
Используйте отдельный запрос для получения подсчета строк.
Чтобы применить нумерацию страниц можно применить два различных подхода:
1) Использование ROWNUM:
select *
from (select /*+ FIRST_ROWS(n) */
a.*, ROWNUM rnum
from (/*your_query_goes_here,
with order by*/) a
where ROWNUM <= :MAX_ROW_TO_FETCH)
where rnum >= :MIN_ROW_TO_FETCH;
: MAX_ROW_TO_FETCH устанавливается в последней строке результирующего набора выборки, если вы хотите : MIN_ROW_TO_FETCH установлен в первой строке результирующего набора для извлечения
2) Использование OFFSET FETCH:
select /*your_query_goes_here, with order by*/ fetch first :ROWS_PER_PAGE rows only
Это отображает первые N строк таблицы (N = ROWS_PER_PAGE) в порядке, указанном в предложении order by.
select /*your_query_goes_here, with order by*/ offset (:PAGE_NUMBER - 1) * :ROWS_PER_PAGE fetch first :ROWS_PER_PAGE rows only
Это будет смещено в таблицу (в отсортированном порядке), а затем выберет следующие N строк таблицы.
Спасибо, что ответили .. это офсетная заправка работает в oracle 11g? – Bhugy
Я не уверен ... И не мог проверить это прямо сейчас. –
Если вы хотите получить соответствие результаты поиска на любой странице и подсчет этих результатов для 1, читайте.
Теперь, предположим, страница будет содержать 10 элементов.
Вы можете получить то, что вы ожидаете, используя
CREATE OR REPLACE PROCEDURE PROC_TEST (V_PAGE_NUMBER IN NUMBER,
V_RESULTS OUT SYS_REFCURSOR,
V_RESULT_COUNT OUT NUMBER) IS
BEGIN
OPEN V_RESULTS FOR
SELECT T.*
FROM (SELECT T.*, ROWNUM ROWNUMBER
FROM DJ_NSRXX T
WHERE ROWNUM <= V_PAGE_NUMBER * 10) T
WHERE ROWNUMBER > 10 * (V_PAGE_NUMBER - 1);
SELECT COUNT(*) INTO V_RESULT_COUNT FROM DJ_NSRXX;
END;
Эта процедура PROC_TEST выполняет задачу подкачки и подсчета голосов.
- 1. MVC и разбиение на страницы
- 2. Поиск и разбиение на страницы
- 3. Разбиение страницы на товар страницы
- 4. Разбиение страницы на статические страницы
- 5. Разбиение страницы на JavaScript
- 6. Разбиение страницы на запрос
- 7. Разбиение на страницы и фильтрация на EmberJS
- 8. Метеор - разбиение на страницы
- 9. Разбиение на страницы категории
- 10. MDX Количество строк и разбиение на страницы
- 11. Графики сущностей JPA и разбиение на страницы
- 12. Django FormView и разбиение на страницы
- 13. Wordpress Plugin: Вложенные и разбиение на страницы
- 14. Django lazy QuerySet и разбиение на страницы
- 15. Разбиение страницы на PHP и бесконечная петля
- 16. Mysql SQL_CALC_FOUND_ROWS и разбиение на страницы
- 17. Простые цифровые загрузки и разбиение на страницы
- 18. AngularJS, Ui-BootStrap и разбиение на страницы
- 19. Eventbrite API и разбиение на страницы
- 20. Rails, ActiveResource и разбиение на страницы
- 21. Plone 4: Сортировка и разбиение на страницы
- 22. Сортировка и разбиение на страницы коллекции
- 23. SQL Результаты поиска и разбиение на страницы
- 24. CowDB разбиение на страницы и сортировка
- 25. Codeigniter: Поиск и разбиение на страницы
- 26. Пользовательский запрос WordPress и разбиение на страницы
- 27. Маркер курсора Solr и разбиение на страницы
- 28. MVCContrib grid - сортировка и разбиение на страницы
- 29. Разбиение страницы на XML и PHP?
- 30. Сортировка и разбиение на страницы с PHP
посмотреть здесь лучший пример реализации DataTable с сервлетов и gson: http://stackoverflow.com/questions/23110665/limit-of-displaying- строки-в-DataTables. –