Как вставить или обновить несколько строк в JDBC

Я пытаюсь вставить большое количество строк, используя подготовленный оператор в JDBC, при этом производительность является моей ключевой проблемой.

Я мог бы легко сделать SELECT COUNT(*) FROM table_name WHERE uuid=incoming_data_uuid для каждого отдельного элемента, который я хочу вставить, но это будет означать, что для каждого отдельного элемента, который я пытаюсь вставить или обновить в таблицу, потребуются запросы два для запуска: select и (update или insert). Это совсем не оптимально, поскольку производительность будет значительно снижена из-за количества запросов, перемещающихся от клиента к базе данных и обратно.

Я рассмотрел другие способы сделать это, включая использование обработки исключений, но ни один из примеров, которые я нашел, не содержит нескольких значений.

Итак, возможно ли как-то сделать INSERT INTO table (?,?,?,?,?) VALUES (), (), (), (), () ON DUPLICATE KEY UPDATE fields или что-то подобное?

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
214
1

Ответы 1

Я бы порекомендовал вам добавить их в пакет и выполнить все за один сетевой обход.

Я бы сделал SELECT INTO, если вы хотите работать с существующими данными.

Ваша забота о производительности - это хорошо.

Другие вопросы по теме