Последовательность кэширования из базы данных для уменьшения количества вызовов в БД - PullRequest
1 голос
/ 08 мая 2019

мы разрабатываем пакетное приложение с использованием JOOQ.Приложение требует вызова последовательности, чтобы получить следующее значение для сохранения большого количества записей.Это определенно повлияет на производительность.Имеет ли JOOQ какой-либо встроенный способ обработки этой или любой другой альтернативы, чтобы уменьшить вызов последовательности для кэширования сгенерированного значения последовательности?

1 Ответ

0 голосов
/ 08 мая 2019

Я предполагаю, что вы планируете загружать, например, 100 порядковых номеров в клиент за один раз, чтобы использовать их в одной последующей пакетной операции.Это может быть достигнуто с помощью следующего оператора jOOQ, например, в Oracle:

SELECT seq.nextval
FROM dual
CONNECT BY level <= 100;

или с помощью jOOQ

ctx.select(SEQ.nextval())
   .connectBy(level().le(100))
   .fetch();

В зависимости от используемой СУБД, вам потребуется заменитьconnectBy() синтаксис по стандартному WITH синтаксису для рекурсии, или generate_series() в PostgreSQL, либо другой запрос таблицы, в которой содержится нужное количество строк, в качестве обходного пути.

...