This question already has answers here:
Improve INSERT-per-second performance of SQLite?
                                
                                    (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/

10-11 22:28
查看更多