【问题标题】:Android SQLite lagsAndroid SQLite 滞后
【发布时间】:2013-05-22 16:29:55
【问题描述】:

在我的 android 应用程序中,我将数据存储在本地 SQLite 数据库中。直到这个数据库的大小小于 8-9 mb,一切都像魅力一样;但是,一旦 DB 大小约为 9 mb,它就会继续写入 logcat:

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

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

我做错了什么?可能是什么问题?我检查了我的 Cursor 对象,我到处关闭它,并且只有当 db 大小高于此点时 Cursor 才会发送警告。

谢谢!

UDATE:我使用“应用程序内部数据库”,而不是 sd 卡。切换到 SD 卡位置可能会有所帮助吗?

【问题讨论】:

    标签: android sqlite


    【解决方案1】:

    如果没有看到你的代码,甚至没有测试你的应用,现在真的很难说:

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

    【讨论】:

    • 感谢您的想法,看起来光标窗口是完整的链接。我不存储图像,但存储大量文本。在这种情况下你会推荐什么?将文本存储在 /sdcard 上的 .txt 文件中?其实我切换到/sdcard数据库,现在快了一点,但是问题存在
    • 我认为您可能希望更新您的查询以仅在需要时提取大量文本。就像我说的,没有看到你的代码很难说。但是你真的需要查询所有列吗?当然,您不会一直渲染所有文本,因此请在需要时获取大文本或通过存储该文本的小 sn-ps 等进行优化。
    • 我使用 WHERE LIKE ´%%´ 查询来提取数据,可能也会影响性能。但无论如何感谢您的建议,似乎是合理的
    • 我也遇到了这个问题,但我的情况有点不同。我试图访问一些具有空值的列。
    【解决方案2】:

    在文件中写入文本并将文件存储到外部存储中,并且只插入文件的路径

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-13
      • 1970-01-01
      • 1970-01-01
      • 2012-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多