Optymalizacja wstawek wsadowych, SQLite

Gram z różnymi rozmiarami buforów, które mają być wstawione do lokalnej bazy danych SQLite i odkryłem, że wstawienie 10 000 000 wierszy danych zajmuje prawie 8 minut, gdy rozmiar bufora wynosi 10 000. Innymi słowy, do zapisania wszystkiego potrzeba 1000 zapisów.

8 minut na przechowywanie 10 000 000 wydaje się trochę za długo (a może tak?)

Czy można zoptymalizować którekolwiek z poniższych, aby zwiększyć prędkość? Pamiętaj, że wstawiane dane to losowy zbiór znaków.

public int flush() throws SQLException {
    String sql = "insert into datastore values(?,?,?,?);";

    PreparedStatement prep = con.prepareStatement(sql);

    for (DatastoreElement e : content) { // content is 10,000 elements long
        _KVPair kvp = e.getKvp();

        prep.setInt(1, e.getMetaHash());
        prep.setInt(2, kvp.hashCode());
        prep.setString(3, kvp.getKey());
        prep.setString(4, kvp.getValue());

        prep.addBatch();
    }

    int[] updateCounts = prep.executeBatch();

    con.commit();

    return errorsWhileInserting(updateCounts);
}

Po utworzeniu tabeli odbywa się za pośrednictwem

    statement.executeUpdate("create table datastore 
               (meta_hash INTEGER," + 
               "kv_hash   INTEGER," + 
               "key TEXT," +
               "value TEXT);");

Czy można zoptymalizować którekolwiek z powyższych?

questionAnswers(2)

yourAnswerToTheQuestion