【发布时间】:2012-04-01 19:36:45
【问题描述】:
我有一个在 iPad 上运行的 Core Data 数据库。它有 30,000 个联系人,其中包含名字、姓氏等属性。
使用 NSCompoundPredicate 的搜索性能不是很好。我正在使用两个 LIKE 谓词(关于名字和姓氏),搜索 30,000 个联系人大约需要 1500 毫秒。然后我尝试将“索引”属性添加到名字和姓氏字段(使用 XCode Data Modeller UI),但性能似乎完全相同。
自从将 Indexed 属性添加到这两个字段后,我已从数据库中删除所有对象并重新填充它。为了开始使用索引,我是否需要做更多的事情?我是否应该期望通过索引复合谓词中使用的两个字段来提高性能?
我在真实设备(iPad3)上运行。用 1500 毫秒搜索 30,000 条联系人记录似乎不太好 - 是否符合课程标准?
非常感谢。
【问题讨论】:
-
您是否将它们加载到 tableView 上?
-
稍后我会这样做,但我正在为搜索计时,而这是花费时间的搜索(我只是在搜索期间构建一个匹配对象的 NSArray)
-
您是否从 Core-Data 获取 30000 个联系人?如果是的话,你一次取多少?
-
否,但数据库中有 30000 个联系人。通常搜索只会返回少数几个。
-
您的查询是否以通配符开头?
标签: objective-c ios xcode core-data indexing