我从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