2

我是数据库新手。

我想在 sqlite 数据库中插入 22000 个单词,但要花很长时间才能完成

for (int i=0;i<s.size();i++){               
    String sql = "INSERT INTO WORD (word) VALUES ("+"'"+s.get(i)+"'"+");";
    statement.executeUpdate(sql);
}

表名是 WORD 并且字段名是 word(这是 a String) 这里 s 是一个 arrylist 并且 s.get(i) 返回一个字符串...我已经建立了连接并尝试更新表。

它非常慢。我究竟做错了什么?

4

1 回答 1

1

它很慢,因为您正在向数据库发送 22000 个查询。您应该分批插入。这将解决问题。即使单次插入需要 10 毫秒,总时间也像 3.5 分钟!

一个包含 2 个批次的简单插入查询将如下所示

"INSERT INTO WORD (word) VALUES ("+"'"+s.get(i)+"'"+"), ("+"'"+s.get(i+1)+"'"+");";

这将减少一半的时间。现在您将不得不以编程方式插入更多这些值。

于 2014-11-08T15:43:36.700 回答