删除表数据时的Sqlite性能

时间:2014-06-29 19:37:14

标签: performance sqlite android-sqlite android-cursor

我有一个删除本地sqlite数据库中所有记录的方法。

public void deleteAll() {
    Cursor c = getAllRows();
    long rowId = c.getColumnIndexOrThrow(KEY_ROWID);
    if (c.moveToFirst()) {
        do {
            deleteRow(c.getLong((int) rowId));
        } while (c.moveToNext());
    }
    c.close();
}

我注意到如果我有大约400多条记录(每行大约有5个字符串列的简单行)要删除它需要大约2秒钟并冻结我的UI。但是,如果我有100个以下的记录,它几乎可以立即工作。我想知道的是这是否正常,或者我是否有某些代码潜伏在导致性能问题的地方。我是一个初学者,所以我一点都不会惊讶地发现我有一些非常丑陋的代码锁定了所有内容。

1 个答案:

答案 0 :(得分:1)

如果要删除表中的所有记录,只需调用单个查询

truncate your_table

delete from your_table

尽量避免一直调用查询,这很慢。而是尝试使用单个查询处理数据。