2014-11-08 64 views
1

我是数据库的新手。插入到Sqlite很慢

我绑插入22000字一个SQLite数据库,但它正在采取永远完成

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

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

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

+0

如果尝试使用批量插入操作,是否有更改? – BackSlash 2014-11-08 15:38:39

+2

插入22000个条目多少次?什么是“慢”,如实际需要多长时间? – Patrick 2014-11-08 15:38:56

+0

这是另一种编程语言,但看看http://stackoverflow.com/questions/1711631/improve-insert-per-second-performance-of-sqlite – Patrick 2014-11-08 15:40:25

回答

1

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

A和2批次简单的插入查询将看起来像这样

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

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

+1

“可能要”?你在猜吗?向OP解释什么是批量插入,以及他将如何完成它,不是更好吗?第一句话是“我是新手”,所以他很可能不知道批量插入是什么。 – Patrick 2014-11-08 15:49:22

+0

有一个选项可以编辑答案,以防我的答案不足。感谢您指出问题,无论如何更新它。 – vatsal 2014-11-08 15:56:19