我对在sqlite(Android)中插入数据的性能提出了一个小问题。我有以下结构的数据:
0 | 1
0 | 2
1 | 3
...
在某些情况下,它们非常大(约50,000行)。我想用SQLite管理数据,但不知何故插入过程需要很长时间(近1分钟)!如果我将它们保存在SharedPreferences中,它几乎会立即发生。
我的插入代码如下所示:
SQLiteDatabase db = this.getWritableDatabase();
ContentValues values = new ContentValues();
long id;
db.beginTransaction();
try{
values.put(KEY_FRIENDIDONE,firstFriendID);
values.put(KEY_FRIENDIDTWO,secondFriendID);
values.put(KEY_CREATED_AT,getDateTime());
System.out.println(firstFriendID+" "+secondFriendID);
id= db.insertWithOnConflict(TABLE_FRIENDSHIPS,null,values,SQLiteDatabase.CONFLICT_IGNORE);
db.setTransactionSuccessful();
}finally {
db.endTransaction();
}
return id;
所以我问自己是否应该使用SharedPreferences而不是SQLite。
Btw ID保存为Integer。但是,如果我将它们保存为字符串,那么我现在不会有所作为。
答案 0 :(得分:1)
实际上,您应该在以下事务中插入50.000
行:
db.beginTransaction();
for(i = 0 -> i = 50.000) doInsert();
// end trasaction here.
你应该看一下GreenDao,它可以帮助你通过某种代码来改善数据库管理和性能:
friendsDao.insertTx(new Friends(id1,id2,time));