Оптимизация пакетных вставок, SQLite

Я играю с буфером разного размера, который нужно вставить в локальную базу данных SQLite, и обнаружил, что вставка 10 000 000 строк данных занимает около 8 минут, когда размер буфера равен 10 000. Другими словами, для хранения всего требуется 1000 записей.

8 минут на хранение 10 000 000 кажется слишком длинным (или это?)

Можно ли оптимизировать что-либо из нижеперечисленного для увеличения скорости? Обратите внимание, что вставляемые данные - это случайная коллекция символов.

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);
}

Когда таблица создана, это делается через

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

Может ли что-то из перечисленного быть дополнительно оптимизировано, пожалуйста?

Ответы на вопрос(2)

Ваш ответ на вопрос