дана бд с таблицей
create table entry (field Long)
после подключения к бд необходимо сгенерировать данные в базу от 1 до скажем 1000000
for (int i = 0; i < n; i++) {
try (PreparedStatement st = conn.prepareStatement("INSERT INTO entry VALUES (?)")) {
st.setInt(1, 1 + i);
st.executeUpdate();
и вот такая генерация работает очень медленно я добавил строчку System.out.println(i); и долго наблюдаю в консоле 4103 4104 4105 4106 4107
пока писал вопрос дошло только до сюда можно как-то ускорить процесс?
Есть несколько способов решить эту проблему.
Начать транзакцию до цикла и зафиксировать после
conn.setAutoCommit(false);
for (int i = 0; i < n; i++) {
...
}
conn.commit();
Использовать пакетные операции
try (PreparedStatement st = conn.prepareStatement("INSERT INTO entry VALUES (?)")) {
for (int i = 0; i < n; i++) {
st.setInt(1, 1 + i);
st.addBatch();
}
st.executeBatch();
}
Сгенерировать данные не в java-коде, а SQL-запросом
insert into entry select * from generate_series(0, 1000000, 1);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите, пожалуйста, как сделать, чтобы слова из массива выводились в таком виде: то есть, чтобы на строчку влезало разное количество слов,...
У меня есть плеер, в котором можно скачивать песниДля скачивания на данный момент я использую IntentService, который выглядит вот так:
До перезагрузки компьютера всё работало отличноПосле перезагрузки netbeans пишет ошибку при компиляции проекта