我正在对review_schedule表进行更新和插入。似乎两者的时间都需要1到2秒,这有点慢。我已尝试在id字段和date_review字段设置和不设置索引。请注意,我正在为插入使用预编译语句,但不使用更新,因为Gingerbread中不支持用于更新的编译语句。这是代码:
public long insert(int id, String lastReviewDate, String nextReviewDate) {
this.insertStmt.bindLong(1, id);
this.insertStmt.bindString(2, lastReviewDate);
this.insertStmt.bindString(3, nextReviewDate);
return this.insertStmt.executeInsert();
}
public void updateSRSInfo(int id, String lastReviewDate,
String nextReviewDate) {
ContentValues contentValues = new ContentValues();
contentValues.put("last_review_date", lastReviewDate);
contentValues.put("next_review_date", nextReviewDate);
this.myDataBase.update(DataBaseHelper.WORD_REVIEW_SCHEDULE,
contentValues, "_id=?", new String[] { Integer.toString(id) });
}
任何建议表示赞赏。
答案 0 :(得分:1)
如果使应用程序无响应的过程的长度,也许您可以将操作移动到另一个线程。
答案 1 :(得分:0)
至少有两个选择:
1)读取未提交的事务,因为默认情况下SQLite只读取提交的事务,这很慢。但是你必须了解你所迁移的所有风险reading uncommitted records。可以通过以下方式更改事务隔离级别:
database.execSQL("PRAGMA read_uncommitted = true;");
2)使用表格索引
答案 2 :(得分:0)
由于您已经拥有了ID,为什么不将它与ContentUri.withAppendedId结合使用,然后您可以直接访问此记录。 我不确定这是否运行得更快或者没有,因为我没有测试过。