【问题标题】:Managing large databases on iPhone devices: simple sqlite3 coding or CoreData?在 iPhone 设备上管理大型数据库:简单的 sqlite3 编码还是 CoreData?
【发布时间】:2011-03-21 03:42:26
【问题描述】:

我必须在具有超过 20k 条记录的大型数据库上管理一个表(数据库大小为 25MB)。我使用 SQLITE 框架以编程方式使用标准查询,如 SELECT\INSERT 等。但是设备上的应用程序非常非常慢。当我点击图标时,Default.png 会冻结 10-20 秒并且应用程序崩溃。当我在模拟器上运行它时(当我从 Xcode 在设备上构建时),应用程序不会崩溃,但加载时间太长,而且更改视图非常慢。

这是一个 SQLITE 问题吗? SQLITE 可以管理大型数据库吗?如果不是,我想我将不得不迁移到 CoreData APi。如果是,我必须调查编码错误...

任何帮助将不胜感激。 谢谢!

【问题讨论】:

    标签: iphone sql database sqlite core-data


    【解决方案1】:

    您的应用在启动时崩溃并且启动速度很慢,这让我相信您的内存不足。您是否有机会将数据库文件加载到内存中?

    【讨论】:

    • 是的,我正在将数据库文件加载到内存中,因为我需要一个包含所有记录的向量(用于搜索和浏览)...
    • 在这种情况下,我将和 Roger 一起做这个,因为 Core Data 可以帮助您进行内存管理。
    【解决方案2】:

    让 coredata 成为你的朋友,我有一个应用程序,它的数据集是你的三倍,它的运行速度随你喜欢。

    【讨论】:

    • 好的,我会要求明天晚上与 Coredata 约会 :D 我希望它会说是 :P 有任何教程\文档建议吗?
    【解决方案3】:

    Kevin,我不想破坏你的约会,但你是否尝试过批量插入(假设这在 iPhone 上可行)或将插入嵌套在事务中?以原子方式进行每个插入将意味着每个都是一个事务,并且那里会有一个损失(每次插入时重新计算每个索引的 btree,等等)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-17
      • 2018-04-27
      • 2020-09-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多