Если у вас одно соединение с базой данных, попытка сохранить объекты параллельно, вероятно, просто добавляет накладные расходы на синхронизацию на стороне клиента (объект соединения). Смотрите потенциальные ловушки параллелизма . Не зная ничего о вашем конкретном коде, я бы предположил, что лучшим подходом было бы попытаться распараллелить только проверку , а затем последовательно выполнить сохранение (с использованием одного соединения БД) , Конечно, если ваши объекты изменчивы, вам нужно убедиться, что они не могут измениться между проверкой и сохранением, но это все еще верно в текущем подходе.
Кстати, вы сохраняете все эти объекты в БД в одной транзакции или у вас просто включен автокоммит? Конечно, это зависит от того, какие ограничения целостности применяются к вашим вставкам, но 2-3 минуты кажутся большими, даже для десятков тысяч строк. Мудрое использование транзакций, если вы не используете его в настоящий момент, может значительно повысить производительность.
Отредактировано для добавления : Используя SQLite на моем настольном компьютере, я могу вставить 100 строк из 1 поля за 5 секунд, используя автокоммит. Я могу вставить 10000 строк из 1 поля за 13 секунд, если они находятся в одной транзакции.