[英]How to speed up large data insertion in Database (SQLite) in Android application
我有一種情況,我必須在數據庫中插入數據,並且數據非常大,在ArrayList
。 數據插入一個循環,如下所示:
for( ..... )
ContentValues cv = new ContentValues();
// cv.put statements
sqLiteDB.insert ......
現在測試用例大約需要1分鍾以上,實際數據預計超過10分鍾,而目標是將時間保持在30秒以下。 數據無法減少。 我的問題是:
我沒有為sqlite嘗試這個,但在mssql中做了類似的事情。 大多數情況下打開/關閉事務比插入需要更多時間。 所以你可以在一次交易中做所有事情..值得嘗試。
db.beginTransaction();
try {
SQLiteStatement insert = null;
insert = db.compileStatement("INSERT OR REPLACE INTO \"MyTable\" ("
+ "\"MyColumnName\") VALUES (?)");
for (i = 0; i++; i < 10000)
{
insert.bindLong(1, i);
insert.execute();
insert.clearBindings();
}
db.setTransactionSuccessful();
}
catch (Exception e) {
String errMsg = (e.getMessage() == null) ? "bulkInsert failed" : e.getMessage();
Log.e("bulkInsert:", errMsg);
}
finally {
db.endTransaction();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.