我正在尝试将不同的缓冲区大小插入本地 SQLite DB,并发现当缓冲区大小为 10,000 时,插入 10,000,000 行数据需要将近 8 分钟。换句话说,存储所有内容需要 1,000 次写入。
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);");
请问以上任何一个可以进一步优化吗?