Две вещи для рассмотрения:
- Убедитесь, что вы анализируете XML с использованием потокового API, такого как SAX или StAX, а не проходите через DOM API.
- Используйте подготовленное заявление и пакетируйте свои вкладки в пакетах, скажем, 1000 вкладок.
В Java вы можете использовать StaxMate , что дает вам небольшой слой над StAX. Затем выполните проверку и вставку во внутренний цикл:
Подготовьте оператор вставки базы данных вне цикла, например:
Connection conn = ...
PreparedStatement ps = conn.prepareStatement("INSERT INTO ... (...) VALUES (?, ?,...)");
static int i=0;
А во внутреннем цикле:
ps.setInt(1, a);
ps.setString(2, b);
...
ps.addBatch();
if(++i % 1000==0) ps.executeBatch()