在 iPhone/iPod Touch 上本地存储包含 333,000 行的 sqlite DB 是不是可行?

Posted

技术标签:

【中文标题】在 iPhone/iPod Touch 上本地存储包含 333,000 行的 sqlite DB 是不是可行?【英文标题】:Is it feasible to store a sqlite DB containing 333,000 rows locally on an iPhone/iPod Touch?在 iPhone/iPod Touch 上本地存储包含 333,000 行的 sqlite DB 是否可行? 【发布时间】:2011-01-06 03:23:44 【问题描述】:

我有一个巨大的表,它有 3 列和大约 333,000 行。 sql 转储约为 58 MB,包含此表的 sqlite DB 约为 20 MB。

我想实现一种“自动完成”,其中用户键入 UISearchBar 并更新 UITableView。我让它在每次用户输入一个字母时都会发出一个 HTTP 请求,但是在用户输入一个字母和 UITableView 更新之间有一个非常明显的延迟。我在想将数据库存储在本地会加快速度,但是,它是一个 非常 大型数据库。

在设备上存储这么大的数据库是否可行?使用 Core Data 会是更好的选择吗?

【问题讨论】:

不管你用哪个,它都会那么大;只需确保您的查询和索引得到很好的优化。数据库专家可以提供帮助。 【参考方案1】:

CoreData 最终将使用 sqlite,所以如果你正确管理你的内存,并且取决于你在 1 次处理的记录数,你应该没问题。

【讨论】:

【参考方案2】:

在我看来是合理的。我会去的!

【讨论】:

我看到一些关于下载应用程序的大小限制为 20 MB 的参考资料。那准确吗,在苹果的文档上吗?如果是这种情况,最初包含数据库可能是不可行的。 我认为是 2GB intomobile.com/2008/06/12/… @moshe 20MB 的限制是指通过手机连接下载,不仅如此,应用程序还必须通过 wifi 下载。 谢谢,我的应用程序可能确实大于 20MB。在第一次启动应用程序后,我可能需要加载部分数据库。【参考方案3】:

您可能还想了解 TokyoCabinet。它可能更适合您的要求。如果是,您应该查看 BNRPersistence 代码以帮助管理数据:https://github.com/hillegass/BNRPersistence

【讨论】:

以上是关于在 iPhone/iPod Touch 上本地存储包含 333,000 行的 sqlite DB 是不是可行?的主要内容,如果未能解决你的问题,请参考以下文章

检测特定的iPhone / iPod touch型号[重复]

JavaScript iPhone / iPod Touch检测

iPhone/iPod Touch检测

检测设备型号(iPhone/iPod Touch)的正确方法?

JavaScript 如何从未破解的iPhone / iPod Touch连接到SOCKS代理

无法在 iPhone/iPod touch 的 Safari iOS 7 中隐藏导航栏