当前位置: 首页 > 知识库问答 >
问题:

有没有更快的方法来迭代Sqlite查询中的行?

公孙霖
2023-03-14

我使用以下行对Sqlite查询的行进行循环。

this.open(); // opening db
Cursor cursor = db.rawQuery(strQuery, null);

cursor.moveToFirst();
do {    

    // do something    

} while (cursor.moveToNext());

cursor.close();

当行数大约为15000时,需要很长时间。空的块需要大约4秒,而有一些代码的块需要大约6秒。这表明以这种方式迭代行是耗时的。

在android和Sqlite中有没有更快的行循环方式?

谢谢


共有1个答案

史超英
2023-03-14

优化您在循环中的操作是提高整个操作速度的唯一方法。例如,如果您在每次迭代中执行getColnIndex调用,您将损失宝贵的时间。做一次,存储值。

使用traceView找出你浪费时间的地方,并在那里改进。可悲的是,我不能给出一个具体的答案,因为我不知道你在循环中做什么。

 类似资料:
  • 我做这个迭代是为了对DataFrame的每个值执行不同的函数: 作为xxx一个2列数据帧

  • 我试图解决这个问题:“2520是最小的数字,可以被1到10的每个数字除,没有任何余数。 可以被1到20的所有数字整除的最小正数是多少?" 请不要告诉我答案,我真的很想自己解决。我只需要一个关于问题数学方面的建议。问题是每个周期添加一个不是一个好主意,因为这个过程太慢了。或者变量类型不长的问题? 我试图得到(1到10)和(1到17)之间所有数字的等分数,该算法运行良好。 我期望得到特定的整数,但得到

  • 我有很多图像在绘制,我希望放入一个数组。手动将它们放入数组会花费太长的时间和代码。我想知道是否有一种方法来循环,如下所示:

  • 我想使用以下循环创建一个新列。表中只有“open”和“start”列。我想创建一个新列“startopen”,如果“start”等于1,那么“startopen”等于“open”。否则,“startopen”等于此新创建列上方行中的任何“startopen”。目前,我能够通过以下方式实现这一点: 这有效,但对于大型数据集来说非常慢。是否有任何内置函数可以更快地完成此操作?

  • 问题内容: 最近,我一直在使用嵌套集模型中的废话。我喜欢为几乎所有有用的操作和视图设计查询。我坚持的一件事是如何选择节点的直接子代(并且 仅 选择子代,而不是进一步的子代!)。 老实说,我确实知道一种方法-但它涉及大量的SQL。我敢肯定有一个更直接的解决方案。 问题答案: 您是否阅读过您张贴的文章?在“查找节点的直接下属”标题下 但是,我要做的(这是作弊)是将嵌套集与邻接列表结合在一起-我在表中嵌

  • 问题内容: 我正在尝试弄清楚如何解析一些XML(对于Android应用程序),在Java中很难做到这一点似乎很荒谬。似乎需要创建一个具有各种回调(startElement,endElement等)的XML处理程序,然后您必须注意将所有这些数据更改为对象。类似于本教程。 我真正需要的只是将XML文档更改为多维数组,甚至更好的是拥有某种Hpricot处理器。有没有办法做到这一点,还是真的必须在上面的示