ローカル SQLite DB に挿入するさまざまなバッファー サイズで遊んでいますが、バッファー サイズが 10,000 の場合、10,000,000 行のデータを挿入するのに 8 分近くかかることがわかりました。つまり、すべてを保存するには 1,000 回の書き込みが必要です。
10,000,000 を格納するのに 8 分は少し長すぎるように思えます (それとも?)
以下のいずれかを最適化して速度を上げることはできますか? 挿入されるデータは、文字のランダムなコレクションであることに注意してください。
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);");
上記のいずれかをさらに最適化できますか?