我有一个名为DiveSite的核心数据实体,它具有大量属性,其中很多属性代表影响潜水站点的功能或条件的布尔值。核心数据性能是否更好,属性更少?
其实,我有这么多的属性,即Xcode中给了我一个警告 - “配置错误的实体 - DiveSite拥有超过100种性能;考虑更浅的实体层次或反规范化属性”
许多属性可能是分组减少了实体上属性的总数 - 我可能会将布尔变量组变成一系列整数,并进行逻辑并检查我想要的因素。
我也意识到,我可以让这些组分为单独的实体 - 其中一些将有1-1的关系和一些1-多关系
在性能方面会改变我的DiveSite实体少属性是一件积极的事情吗?
如果是这样,那么可能会有更好的性能明智的拥有单独的实体,或者可能有6个属性,我使用谓词来过滤。 ?
考虑这个问题时,我意识到,如果我走单独的实体路线,我允许自己添加因子,只需将它们添加为实体的实例而不更改我的代码。
在我写这篇但希望体验的核心数据的意见/和数据库用户那里
干杯
那么,当你获取一个实体时,所有的属性都与它一起被填充? – user523234
是的,它提取整个实体。 – rednaw
我认为情况有点复杂。核心数据获取所有属性值(如果'includesPropertyValues'为'YES',则默认为),并将它们存储在行缓存中。托管对象将作为错误返回,并且稍后将使用行缓存中的值填充。您可以通过将'returnsObjectsAsFaults'设置为'NO'来更改此行为。也就是说,分割你的实体听起来像个好主意。 –