CoreData 性能重复实体与属性

Posted

技术标签:

【中文标题】CoreData 性能重复实体与属性【英文标题】:CoreData performance duplicate entities vs properties 【发布时间】:2014-07-24 00:16:57 【问题描述】:

我正在制作一个 ios 应用,其中包含数千张带有问题的闪存卡。问题库有大约 10,000 个问题,分为 5 个类别。一个问题只能有一个类别。类别不会改变,它们是固定的。问题只是文字。不涉及图像。

我在考虑两种方法:

1) 为问题创建一个实体,其中包含一个类别字段 (int)。

获取结果以仅获取特定类别的问题。

2) 创建 5 个 Entities,所有字段都相同,但类别除外,其具有与类别对应的默认值。

为什么选择选项 2? 我认为选项 1) 是正确的选项,但是该应用程序有很多问题,我认为提交过滤特定字段的查询可能比检索完全不同的实体要慢。我从 SQL 的角度考虑,可能在一个表上执行 SELECT ,然后在另一个表上执行,应该比同一张表上的 SELECT...WHERE 更快?

【问题讨论】:

【参考方案1】:

我同意你的观点,选项 1 是正确的选项。从另一个实体检索类别将增加最小的开销。此外,如果您必须编辑一个类别,您只需更改一个条目。您还可以更轻松地添加其他类别。

如果您真的关心性能(我认为您当时不应该),您可以同时编写代码并进行速度测试。但这确实是矫枉过正,差异可能微不足道。

【讨论】:

以上是关于CoreData 性能重复实体与属性的主要内容,如果未能解决你的问题,请参考以下文章

与此上下文的 CoreData SwiftUI 错误不同的 NSManagedObjectModel

数据插入上的核心数据级联

CoreData - 在实体上有许多关系时的性能

替换 CoreData 实体中所有属性的 getter

CoreData 关系与属性

NSPredicate:“添加”一对多关系CoreData中所有实体的属性值