Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 加速数据库插入_Java_Android_Database_Sqlite - Fatal编程技术网

Java 加速数据库插入

Java 加速数据库插入,java,android,database,sqlite,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 + ", "

我从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;
        }
int init=0;
for(int t=init;t
有什么好的方法可以优化它吗?
非常感谢!

< P>作为一个异步任务,找出你的方法,如果你做了1000个查询,你就已经遇到了一个设计问题。考虑改变你的方法。< /P> < P>作为一个异步任务,找出你的方法,如果你正在做1000个查询,你就已经遇到了一个设计问题。考虑改变你的方法。

P>我同意最好的方法是使用线程,但是从用户界面的角度来看,以及Android推荐的方法(长任务可能会被终止,以便为更重要的任务腾出空间),我建议使用
服务
。如果您可以管理大流程作为服务运行,但在活动中接收更新(通过绑定或广播),您应该能够在执行所有处理时更新UI

此外,关于JSON是否比XML快还有一些争论。有了这么复杂的东西,可能值得一试


<>最后,考虑使用SyrdPoopy缓存数据(特别是如果数据在会话之间不经常变化)。

< P>我同意最好的方法是使用线程,但是从UI的观点来看,以及Android所推荐的(长任务可以被杀死以获得更重要任务的空闲空间)。,我建议使用
服务
。如果您可以管理将大流程作为服务运行,但在活动中接收更新(通过绑定或广播),那么您应该能够在执行所有处理时更新UI

此外,关于JSON是否比XML快还有一些争论。有了这么复杂的东西,可能值得一试


P>最后,考虑使用SydPoopy缓存数据(特别是如果数据在会话之间不经常变化)。

需要大容量插入的速度。


使用而不是SQLiteDatabase.insert

您需要大容量插入的速度


使用而不是SQLiteDatabase。插入

谢谢。我不知道如何以另一种方式接近我的目标。我有一个列表视图,大约有180个条目(从XML解析,因为所有内容都是可变的)。每个条目还带有4个其他数据(url和名称)你有没有一种想法我可以用更好的方式来处理它?而不是把它扔进一个列表中,而是把它分解成基于关系的方式,这样你就不用去查询所有的东西了。意味着我只需要在需要的时候插入它。好主意,但是如何使这个工作。我想这会使我的ListVIEW松弛。时间是你需要处理的全部。用,尝试一下。因为这篇文章激发了一些人对你的改变的兴趣,如果你觉得它解决了/启发了如何解决你的问题,别忘了标记它。我想我有一点想法,如何解决它。在appstart上我插入了大约15行。如果我向下滚动我的ListView,我会插入15行新内容。唯一的问题是我的搜索。我想我必须在一个新的线程中插入一个越来越多的后台插入。谢谢。我不知道如何以另一种方式接近我的目标。我有一个列表视图,大约有180个条目(从XML解析,因为所有内容都是可变的)。每个条目还带有4个其他数据(url和名称)你有没有一种想法我可以用更好的方式来处理它?而不是把它扔进一个列表中,而是把它分解成基于关系的方式,这样你就不用去查询所有的东西了。意味着我只需要在需要的时候插入它。好主意,但是如何使这个工作。我想这会使我的ListVIEW松弛。时间是你需要处理的全部。用,尝试一下。因为这篇文章激发了一些人对你的改变的兴趣,如果你觉得它解决了/启发了如何解决你的问题,别忘了标记它。我想我有一点想法,如何解决它。在appstart上我插入了大约15行。如果我向下滚动我的ListView,我会插入15行新内容。唯一的问题是我的搜索。我想我必须在一个新线程中插入一个越来越多的后台插入。XML解析在1秒内完成。数据插入大约持续20秒…数据更改不在我手中,它可以一天更改5次,或者一周更改1次。我不认为使用SharedReferences作为数据是一个好主意。有太多的数据需要保留机架…效率不高,需要太多的维护这是一个很好的观点。数据库结构会更有效。XML解析在1秒内完成。数据