加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

objective-c – iOS核心数据索引属性未提高性能

发布时间:2020-12-14 17:46:08 所属栏目:百科 来源:网络整理
导读:我有一个在iPad上运行的Core Data数据库.它有30,000个联系人,其中包含firstname,lastname等属性. 使用NSCompoundPredicate,搜索性能不佳.我或者是两个LIKE Predicates(在名字和姓氏上),它需要大约1500毫秒来搜索30,000个联系人.然后我尝试将’indexed’属性
我有一个在iPad上运行的Core Data数据库.它有30,000个联系人,其中包含firstname,lastname等属性.

使用NSCompoundPredicate,搜索性能不佳.我或者是两个LIKE Predicates(在名字和姓氏上),它需要大约1500毫秒来搜索30,000个联系人.然后我尝试将’indexed’属性添加到firstname和lastname字段(使用XCode Data Modeller UI),但性能似乎完全相同.

由于将Indexed属性添加到两个字段,我已从数据库中删除了所有对象并重新填充它.我是否需要做更多的事情才能开始使用索引,我是否希望通过索引复合谓词中使用的两个字段来提高性能?

我正在使用真实设备(iPad3).搜索30,000个联系人记录的1500毫秒似乎并不那么好 – 它是否适合课程?

非常感谢.

解决方法

无论您搜索的属性是否已编入索引,LIKE搜索都很昂贵.

许多应用程序 – 包括Apple自己的应用程序 – 通过以用户不会注意到的方式限制搜索来避免此问题.例如,在类似于“联系人”的应用程序中进行搜索时,实际上并不希望将查询与人名的所有可能子字符串相匹配;相反,它匹配名字以查询开头的名字.

为了进一步优化,还要考虑到你可能无法获得LIKE和BEGINSWITH为您提供的完全符合Unicode,case和diacritic感知的匹配. Apple的DerivedProperty示例显示了如何通过存储搜索属性的“规范化”(即所有相同的情况,没有变音符号,其他无关的东西)版本并使用依赖于词典排序的谓词(例如normalizedLastName> =)来获得更好的性能. “foo”&& normalizedLastName<“fop”). 关于这些和相关技巧的更多细节可以在过去的WWDC的一些核心数据会议中找到,尤其是2010 Session 137,“Optimizing Core Data Performance on iPhone OS”.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读