2014-11-08 82 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