我從XML解析數據並將其插入到我的數據庫中。但是這些是高達1000個Querys,必須在應用程序啓動之前完成。
因爲我必須使用FTS3搜索,插入會顯着減慢。加速數據庫插入
在我添加FTS3搜索之前,我使用BLOB
。這很快。我如何加快速度?
我用這個FTS3表:
db.execSQL("CREATE VIRTUAL TABLE " + TABLE_FTS + " USING fts3(" + COL_ID + ", " + COL_KEY_ID + ", " + COL_KEY_NAME + ", "
+ COL_KEY_WEBURL + ", " + COL_KEY_MAINURL + ", " + COL_KEY_LOGO + " " + ");");
,我插入的文本用這種方法:
int init = 0;
for(int t = init; t < arr.length; t++){
Log.i(TAG, "arr["+t+"] = " + arr[t].trim());
if(r == 1) {
database.execSQL("INSERT INTO table (id) VALUES ('" + arr[t].trim() + "')");
id_save = arr[t].trim();
r++;
}else if(r == 2) {
database.execSQL("UPDATE table SET name='" + arr[t].trim() + "' WHERE id='" + id_save + "'");
name_save = arr[t].trim();
r++;
}else if(r == 3) {
database.execSQL("UPDATE table SET weburl='" + arr[t].trim() + "' WHERE id='" + id_save + "' AND name='" + name_save + "'");
r++;
}else if(r == 4) {
database.execSQL("UPDATE tables SET mainurl='" + arr[t].trim() + "' WHERE id='" + id_save + "' AND name='" + name_save + "'");
r++;
}else if(r == 5) {
database.execSQL("UPDATE table SET logo='" + arr[t].trim() + "' WHERE id='" + id_save + "' AND name='" + name_save + "'");
r = 1;
}
是否有優化它什麼好的辦法? 非常感謝!
謝謝,我如何使用InsertHelper執行'UPDATE'? – Leandros 2012-01-29 16:09:03
該死!這很快。我減少到只有3秒。大約20秒之前。史詩!非常感謝! – Leandros 2012-01-29 16:27:10