有没有更快的方法来遍历 Sqlite 查询中的行?

Posted

技术标签:

【中文标题】有没有更快的方法来遍历 Sqlite 查询中的行?【英文标题】:Is there any faster way to iterate through rows from Sqlite query? 【发布时间】:2012-08-27 08:38:26 【问题描述】:

我正在使用以下几行来循环 Sqlite 查询的行。

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

cursor.moveToFirst();
do     

    // do something    

 while (cursor.moveToNext());

cursor.close();

当行数约为 15000 时,需要很长时间。 空的while 块大约需要 4 秒,带有一些代码的 while 块大约需要 6 秒。它表明以这种方式对行进行迭代非常耗时。

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

谢谢,

【问题讨论】:

我不确定您的 SQLite 用例,但这可能有用:shopwith.it/2011/12/16/… 如果你愿意,你能解释一下为什么你需要一次检索这么多记录吗?你也不能在你的 SELECT 语句中折叠到更少吗? 【参考方案1】:

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

使用traceView 找出您正在浪费时间的地方并在那里进行改进。遗憾的是我无法给出具体的答案,因为我不知道你在循环中做了什么。


Traceview Debugging

【讨论】:

以上是关于有没有更快的方法来遍历 Sqlite 查询中的行?的主要内容,如果未能解决你的问题,请参考以下文章

更快地遍历一个 DataFrame 的行以将列添加到第二个 DataFrame

任何更快的方法来计算 Pig 中的行数

在 sqlite3 中更快的批量插入?

这个 SQLite 查询可以更快吗?

在 HTML5 的 SQLite 查询中循环遍历多个表 - 异步计时

SQLite 查询可能存在值的行?