安卓SQLite运行缓慢

3

在我的安卓应用中,我将数据存储在本地SQLite数据库中。只要这个数据库的大小小于8-9 MB,一切都像魔法般地运行得很好;然而,一旦数据库的大小约为9 MB左右,它就会不断地写入logcat:

 Window is full: requested allocation 228 bytes, free space 192 bytes, window size 2097152 bytes

这会导致像SELECT * WHERE这样的简单查询非常长的时间。

我做错了什么?可能是什么问题?我检查了我的Cursor对象,我在任何地方都关闭它,只有当数据库大小超过此点时,Cursor才发送警告。

谢谢!

更新:我使用的是“应用程序内部数据库”,而不是SD卡。切换到SD卡位置是否有所帮助?

2个回答

0

在看过你的代码或测试你的应用之前,此时很难说:

因此,请检查您的查询并阅读sqlite的限制。您可以像链接中的问题OP一样将数据库移动到sd卡中,但他加载的是存储在数据库中的图像。


谢谢您的建议,看起来Cursor Window已经满了。我没有存储图像,但是存储了相当大量的文本。在这种情况下,您会推荐什么?将文本存储在/sdcard上的.txt文件中吗?实际上,我已经切换到了/sdcard数据库,现在速度有点快了,但问题仍然存在。 - Roman
1
我认为你可能想要更新查询,只在需要时提取大量文本。就像我说的,没有看到你的代码很难说。但是你真的需要查询所有列吗?肯定不是每次都渲染所有文本,所以可以考虑在需要时获取大文本或通过存储小片段来进行优化等。 - cbrulak
我使用WHERE LIKE '%%'查询来提取数据,可能会影响性能。但无论如何感谢您的建议,看起来很合理。 - Roman
我也遇到了这个问题,但我的情况有些不同。我正试图访问一些空值列。 - Khawar Raza

0
将文本写入文件并将文件存储到外部存储中,仅插入文件路径。

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