我的核心数据模型包含三个实体(没有继承)。
Management
Team Leader
worker
实体之间的关系: 对于任何经理,可以是更多的经理,团队领导和工人。 对于任何团队经理都可以是其他工人。
该模型总共包含100,000多个对象。
所有数据均由NSOutlineView表示,例如:
*Management
-Management
-Management
-Team Leader
-worker
-worker
-worker
-Management
-worker
-worker
-Management
-worker
-worker
-worker
*Management
-Team Leader
-worker
-worker
-Team Leader
*Management
-Team Leader
-worker
-worker
用户可以通过在文本字段中键入文本(标记)来过滤大纲视图。
对于每组令牌,我在核心数据模型中搜索实体或任何关系实体是否包含所有令牌,如果答案为真,则实体将在大纲视图中表示,以及他的所有祖先,例如如果只有两个工人包含所有令牌,则用户将看到(对于这两个工作,最近的共同祖先是第三个经理,而第一个工人也有团队负责人):
Management
-Management
-Management
-Team Leader
-<worker>
-<worker>
所以,基本上我的数据结构是一棵树,搜索最直观的方式(对我来说)是递归算法(我用DFS完成)。
(如果我理解正确,则无法使用NSPredicate以递归方式进行搜索。)
因此,对于每组令牌(我使用限制以避免冗余 在用户输入时搜索)。我通过高层管理人员(最高层管理人员)和所有他们的关系实体(子管理层,团队成员和工人)。
此搜索操作需要很长时间。 恕我直言,主要的问题是我一直通过所有实体,我无法通过索引提高性能,因为我不使用查询,我只是浏览每个所有对象并将它们加载到内存中,我还会在内存中的对象之前,在早期查询中遇到性能问题。
有关如何提高性能的建议吗?
答案 0 :(得分:0)
为什么要搜索递归?
我会这样做: