1. ホーム
  2. android

[解決済み] Android SQLite データベース: 挿入が遅い

2023-02-20 02:23:14

質問

かなり大きな XML ファイル (約 100 キロバイトから数百キロバイトの間) を解析する必要があります。 Xml#parse(String, ContentHandler) . 現在、152KB のファイルでこれをテストしています。

パース中に、以下のような呼び出しを使用してSQLiteデータベースにデータを挿入することもしています。 getWritableDatabase().insert(TABLE_NAME, "_id", values) . これらすべてを合わせると、152KB のテスト ファイルに約 80 秒かかります (これは約 200 行の挿入に相当します)。

すべての挿入ステートメントをコメントアウトすると (しかし、他のすべて、たとえば ContentValues など) をコメントアウトすると、同じファイルにわずか 23 秒しかかかりません。

データベース操作にこれほど大きなオーバーヘッドがあるのは普通なのでしょうか?それについて何かできることはありますか?

どのように解決するのですか?

一括挿入を行う必要があります。

疑似コードです。

db.beginTransaction();
for (entry : listOfEntries) {
    db.insert(entry);
}
db.setTransactionSuccessful();
db.endTransaction();

そのおかげで、私のアプリでの挿入のスピードが非常に上がりました。

更新しました。

@Yukuさんから、とても興味深いブログ記事を提供していただきました。 Android で inserthelper を使って sqlite データベースへの挿入を高速化する。