Я пытаюсь вставить большое количество строк, используя подготовленный оператор в JDBC, при этом производительность является моей ключевой проблемой.
Я мог бы легко сделать SELECT COUNT(*) FROM table_name WHERE uuid=incoming_data_uuid
для каждого отдельного элемента, который я хочу вставить, но это будет означать, что для каждого отдельного элемента, который я пытаюсь вставить или обновить в таблицу, потребуются запросы два для запуска: select
и (update
или insert
). Это совсем не оптимально, поскольку производительность будет значительно снижена из-за количества запросов, перемещающихся от клиента к базе данных и обратно.
Я рассмотрел другие способы сделать это, включая использование обработки исключений, но ни один из примеров, которые я нашел, не содержит нескольких значений.
Итак, возможно ли как-то сделать INSERT INTO table (?,?,?,?,?) VALUES (), (), (), (), () ON DUPLICATE KEY UPDATE fields
или что-то подобное?
Я бы порекомендовал вам добавить их в пакет и выполнить все за один сетевой обход.
Я бы сделал SELECT INTO, если вы хотите работать с существующими данными.
Ваша забота о производительности - это хорошо.