Как зацикливаться на большом наборе результатов SQL в Java или получать X строк одновременно - PullRequest
0 голосов
/ 13 июня 2019

В моей программе Spring Batch я выполняю запрос SQL , извлекаю некоторую информацию из возвращенного набора результатов и затем распечатываю ее в файл.

Возвращено слишком много строк, поэтому запрос имеет плохую производительность.

SELECT * 
FROM CIF
WHERE status > 1

Этот пример запроса возвращает 500 000 строк.

Я пытался выбрать 5000 верхних строк одновременно:

SELECT TOP 5000
FROM CIF
WHERE status > 1

Проблема здесь в том, что если я зациклюсь на этом, я получу те же 5000 строк каждый раз. Я не могу придумать, как сделать цикл и получить 5000 строк, распечатать необходимую мне информацию в файл и получить следующие 5000 строк. Есть идеи?

Ответы [ 2 ]

0 голосов
/ 13 июня 2019

Spring Batch делает это изначально с нашим JdbcPagingItemReader. Вы также можете передавать записи (вместо того, чтобы возвращать их все сразу) с помощью JdbcCursorItemReader. Пейджинг обрабатывает лимит запросов для вас. Вы можете прочитать больше о JdbcPagingItemReader в документации здесь: https://docs.spring.io/spring-batch/4.0.x/reference/html/readersAndWriters.html#pagingItemReaders

0 голосов
/ 13 июня 2019

Я не уверен насчет пружинного пакета, но, поскольку вы используете sql, вы можете использовать параметр "limit" .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...