【发布时间】:2014-08-11 22:40:31
【问题描述】:
我正在从一个大型数据库中检索一系列对象。每次查找有 1-20 个结果。使用如下获取请求:
NSPredicate *indexPredicate = [NSPredicate predicateWithFormat:
@"index == %@",indexNumber];
我可以在相对较短的时间内得到结果。
CoreData: annotation: total fetch execution time: 0.0623s for 9 rows.
但是,当将所有谓词与 [NSCompoundPredicate orPredicateWithSubpredicates: 合并以在一次操作中进行提取时,速度会下降。
CoreData: annotation: total fetch execution time: 0.3890s for 195 rows.
我已经尝试过索引、设置抓取和批处理限制,但无法减少总抓取时间。我也尝试过使用 GDC 一个一个地同时执行 fetch 请求,但是在设置它时遇到了麻烦。如何减少获取这些数据的时间?
【问题讨论】:
-
也许尝试另一个数据库?众所周知,Core Data 存在性能瓶颈。您可以使用 SQLite... 或尝试更快的 Realm - 我一直想测试一下。
-
如上所述,这个问题没有提供足够的信息来获得有用的反馈。你的“慢”获取请求究竟是什么样的?正在搜索的数据的格式是什么?什么是数据库架构?哪些字段有索引?您很可能只是对所有元素执行线性搜索,可能会应用一个缓慢而复杂的谓词。
-
这个复合谓词只是像
indexPredicate这样的1-20个谓词的“或”,但索引号不同吗?
标签: ios core-data nsfetchrequest