如何在Android上加快SQLite访问速度

时间:2011-07-22 00:01:50

标签: android sqlite performance

我正在对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) });

}

任何建议表示赞赏。

3 个答案:

答案 0 :(得分:1)

如果使应用程序无响应的过程的长度,也许您可​​以将操作移动到另一个线程。

答案 1 :(得分:0)

至少有两个选择:

1)读取未提交的事务,因为默认情况下SQLite只读取提交的事务,这很慢。但是你必须了解你所迁移的所有风险reading uncommitted records。可以通过以下方式更改事务隔离级别:

database.execSQL("PRAGMA read_uncommitted = true;"); 

2)使用表格索引

答案 2 :(得分:0)

由于您已经拥有了ID,为什么不将它与ContentUri.withAppendedId结合使用,然后您可以直接访问此记录。 我不确定这是否运行得更快或者没有,因为我没有测试过。