This question already has answers here:
Improve INSERT-per-second performance of SQLite?
(10个回答)
5年前关闭。
我是数据库新手。
我想在sqlite DB中插入22000个单词,但要花很长时间才能完成
表名是WORD,字段名是word(是
这里s是一个arrylist,而s.get(i)返回一个字符串...我已建立连接并尝试更新
桌子。
非常慢。我究竟做错了什么?
这将使时间减少一半。现在,您将需要以编程方式插入更多这些值。
(10个回答)
5年前关闭。
我是数据库新手。
我想在sqlite DB中插入22000个单词,但要花很长时间才能完成
for (int i=0;i<s.size();i++){
String sql = "INSERT INTO WORD (word) VALUES ("+"'"+s.get(i)+"'"+");";
statement.executeUpdate(sql);
}
表名是WORD,字段名是word(是
String
)这里s是一个arrylist,而s.get(i)返回一个字符串...我已建立连接并尝试更新
桌子。
非常慢。我究竟做错了什么?
最佳答案
它的速度很慢,因为您正在向数据库触发22000个查询。您应该分批插入。这样可以解决问题。即使一次插入总耗时为10ms,也就是3.5分钟!!
一个简单的批次为2的插入查询如下所示
"INSERT INTO WORD (word) VALUES ("+"'"+s.get(i)+"'"+"), ("+"'"+s.get(i+1)+"'"+");";
这将使时间减少一半。现在,您将需要以编程方式插入更多这些值。
关于java - 插入Sqlite的速度很慢,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26818801/