1

一个一般的 CoreData/SQLite 问题

NSManagedObjectContext使用 SQLite 存储保存时,这两种情况之间是否存在显着差异:

  • 在包含10的对象中添加/更改/删除一个对象后,否则未更改NSManagedObjectContextNSManagedObjects
  • 在包含10'000的对象中添加/更改/删除一个对象后,否则未更改NSManagedObjectContextNSManagedObjects
4

3 回答 3

2

根据我对企业对象(Core Data 是从它演变而来的)的经验进行概括,我会说你的两个场景在没有索引的情况下同样快,而在第二个场景中,索引会稍微慢一些。

使用 SQL 存储,添加一个对象的成本在很大程度上是固定的,无论图中有多少其他对象。索引确实会导致缩放效果,因为索引依赖于其他现有对象。但是,在绝大多数情况下,这并不重要。

图表中的关系越复杂,受图表总大小影响的保存就越多。显然,如果你的图只有十个对象,那么没有任何关系可以有超过十个对象。如果您有一个有 10,000 个的关系,则关系可能会更大并且需要更长的时间来处理。

总之,带有 SQL 存储的 Core Data 似乎在很大程度上不受图表大小的影响。

于 2010-02-09T16:05:43.630 回答
1

分析将告诉您是否存在显着差异。但是,我怀疑店员的类型会影响表演。在 SQLite 数据库中更新对象可能比在 XML 树中更新更快且更具可扩展性。

于 2010-02-09T14:32:05.033 回答
0

根据我之前的经验,没有显着差异。如果要添加/更改/删除的对象包含很多索引属性,那么与没有索引属性的对象相比,它会稍微多一些,但这是可以预料的,因为索引也会被修改。

于 2010-02-09T15:45:26.527 回答