Как ускорить доступ к SQLite на Android - PullRequest
0 голосов
/ 22 июля 2011

Я делаю обновление и вставку в таблицу 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 ]

1 голос
/ 29 июля 2011

Если длительность процедуры делает приложение не отвечающим, возможно, вы можете переместить операцию в другой поток.

0 голосов
/ 22 июля 2011

Поскольку у вас уже есть идентификатор, почему бы не объединить его с ContentUri.withAppendedId, тогда вы можете получить доступ к этой записи напрямую. я не уверен, работает ли это быстрее или нет, так как я не проверял это.

0 голосов
/ 22 июля 2011

Как минимум два варианта:

1) Чтение незафиксированных транзакций, поскольку по умолчанию SQLite читает только зафиксированные транзакции, что является медленным. Но вы должны понимать все риски, с которыми вы сталкиваетесь , читая незафиксированные записи . Изменить уровень изоляции транзакции можно следующим образом:

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

2) Использовать таблицы индексации

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...