从SQLite数据库加载10000行的最快方法是什么?

5
什么是从SQLite数据库中快速加载10000行到内存的方法?每一行有1个文本和4个整数。目前,我正在进行如下操作:
while(!cursor.isAfterLast()) {
    cursor.copyStringToBuffer(column_index_1, buffer);
    cursor.copyStringToBuffer(column_index_2, buffer);
    cursor.copyStringToBuffer(column_index_3, buffer);
    cursor.copyStringToBuffer(column_index_4, buffer);
    cursor.copyStringToBuffer(column_index_5, buffer);
    cursor.moveToNext();
}

上述代码在Galaxy Nexus上需要大约750毫秒的时间。在旧设备上,它可能会慢几倍。我能让它更快吗?
(此时,您可能正在输入类似“为什么需要将行加载到内存中?”的内容。这有点复杂,但如果有人感兴趣,我可以尝试解释一下。编辑:这是解释:https://gist.github.com/fhucho/af355d56ae3145e3e30f

2
我很感兴趣!请解释一下。 :) - Ken Wolf
@KenWolf 好的,我会在几分钟后发布解释的链接 :) - fhucho
如果一行的所有列都被复制到同一个缓冲区中,那么可以尝试创建一个类似于“select col1 || col2 || ...”的SQL语句来让SQLite执行连接操作。这可能会更快,也可能不会更快。 - Michael Butscher
1
@KenWolf,有些东西简化了一点,如果有不清楚的地方,我可以解释一下:https://gist.github.com/fhucho/af355d56ae3145e3e30f - fhucho
1个回答

2

1
好的,所有行都应该异步加载。不是前1,000行是免费的。 :-) - CommonsWare
我几乎肯定会异步地完成它,但这并不会改变它会很慢的事实 :) - fhucho

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接