4

SQLite テーブルに 5000 ~ 6000 を超えるレコードがあります。このすべてのレコードを削除すると、非常に時間がかかり、画面が一時停止し、リソースの解放が開始されます。

AsyncTask で試してみましたが、それでも同じ問題です。アプリをブロックせずに、この何千ものレコードを削除する方法を誰にでも教えてください。

4

2 に答える 2

0

私はSqliteの専門家ではありませんが、一般的に3つの方法があります。

  1. すべてのレコードを削除する場合は、すべてのボディがTruncateとコメントしているように。
  2. レコードの大部分に移動する場合は、削除されないファイルをtempTableに保存してから、実際のテーブルを切り捨てて、最後にすべてのレコードをtempから実際のテーブルに挿入できます。
  3. これは私がいつも使うものです。あなたの場合、2分ごとに200レコードを削除できるTopXXXdeleteステートメントを使用してください。(2分間に200を超えるレコードを挿入しないことを前提としています)。AsyncTaskは、そのようなアプローチの方法です。T-SQLでは、次のSQLを使用します。

    Delete From tUser where UserId in(Select top 200 UserId From tUser where LastLoggin <GetDate()-120)

于 2012-12-14T10:21:07.103 に答える
0

テーブル内のすべてのレコードを削除したい場合は、テーブルを削除してみてください:

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

後で空のテーブルを再作成します。

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

于 2012-12-14T10:00:13.383 に答える