4

我在 SQLite 表中有超过 5000-6000 条记录。当我删除所有记录时,它需要很长时间并导致屏幕暂停并开始释放资源。

我用 AsyncTask 尝试过,但仍然是同样的问题。所以谁能告诉我应该如何在不阻止应用程序的情况下删除这数千条记录。

4

2 回答 2

0

如果要删除表中的所有记录,可以尝试删除表:

http://www.sqlite.org/lang_droptable.html

然后重新创建一个空表:

http://www.sqlite.org/lang_createtable.html

于 2012-12-14T10:00:13.383 回答
0

我不是 Sqlite 专家,但总的来说有 3 种方法可以做到这一点。

  1. 正如每个人都评论说,如果您要删除所有记录,请截断。
  2. 如果您要处理大多数记录,您可以将非删除文件存储在tempTable中,然后截断您的实际表,最后将所有记录从 tempTable 插入到实际表中
  3. 这是我大部分时间使用的。在您的情况下使用 Top XXX 删除语句,您可以在每 2 分钟内删除 200 条记录。(我假设您不会在 2 分钟内插入超过 200 条记录)。AsyncTask 就是这种方法的方式。在 T-SQL 中,我使用以下 sql 由您决定

    从 UserId 所在的 tUser 中删除(从 LastLoggin< GetDate()-120 的 tUser 中选择前 200 个 UserId)

于 2012-12-14T10:21:07.103 回答