我从 XML 解析数据并将其插入到我的数据库中。但这些最多 1000 个查询必须在应用程序启动之前完成。
因为我必须使用 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;
}
有什么好的优化方法吗? 非常感谢!
最佳答案
您需要批量插入的速度。
使用DatabaseUtils.InsertHelper 而不是 SQLiteDatabase.insert
关于java - 加快数据库插入速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9050605/