java - 加快数据库插入速度

标签 java android database sqlite

我从 XML 解析数据并将其插入到我的数据库中。但这些最多 1000 个查询必须在应用程序启动之前完成。
因为我必须使用 FTS3 搜索,所以插入速度明显减慢。

在添加 FTS3 搜索之前,我使用了 BLOB。这速度相当快。我怎样才能加快速度?

我使用这个 FTS3 表:

db.execSQL("CREATE VIRTUAL TABLE " + TABLE_FTS + " USING fts3(" + COL_ID + ", " + COL_KEY_ID + ", " + COL_KEY_NAME + ", "
            + COL_KEY_WEBURL + ", " + COL_KEY_MAINURL + ", " + COL_KEY_LOGO + " " + ");");

我用这个方法插入字符串:

      int init = 0;
      for(int t = init; t < arr.length; t++){
          Log.i(TAG, "arr["+t+"] = " + arr[t].trim());

        if(r == 1) {
            database.execSQL("INSERT INTO table (id) VALUES ('" + arr[t].trim() + "')");
            id_save = arr[t].trim();
            r++;
        }else if(r == 2) {
            database.execSQL("UPDATE table SET name='" + arr[t].trim() + "' WHERE id='" + id_save + "'");
            name_save = arr[t].trim();
            r++;
        }else if(r == 3) {
            database.execSQL("UPDATE table SET weburl='" + arr[t].trim() + "' WHERE id='" + id_save + "' AND name='" + name_save + "'");
            r++;
        }else if(r == 4) {
            database.execSQL("UPDATE tables SET mainurl='" + arr[t].trim() + "' WHERE id='" + id_save + "' AND name='" + name_save + "'");
            r++;
        }else if(r == 5) {
            database.execSQL("UPDATE table SET logo='" + arr[t].trim() + "' WHERE id='" + id_save + "' AND name='" + name_save + "'");
            r = 1;
        }

有什么好的优化方法吗? 非常感谢!

最佳答案

您需要批量插入的速度。

使用DatabaseUtils.InsertHelper 而不是 SQLiteDatabase.insert

关于java - 加快数据库插入速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9050605/

相关文章:

java - 一种双向字符串哈希函数

java - 有界类型参数不允许访问适当对象的方法

java - JAVAFX中的滚动条

sql - 为什么这个 powershell 脚本需要这么长时间?它使我的 GUI 崩溃

java - 如何使用 Spring Boot 返回 jasper 生成的 excel 类型

android - 更新到 Android Studio 3.6 后,应用程序在运行时崩溃

安卓应用程序。它也可以包含源代码吗?

PHP MySQL 从 2 个不同的表中选择 * 并在两个表中显示按日期时间列排序的混合数据

java - 我应该使用什么数据存储来在我的应用程序中存储歌词?

android - 如何在android中的位图上添加效果?