我应该索引NSSortDescriptor中使用的属性吗?

问题描述:

如果我执行核心数据读取请求,并应用一种描述符如说:我应该索引NSSortDescriptor中使用的属性吗?

NSSortDescriptor *sort= [[NSSortDescriptor alloc] initWithKey:@"createDate" ascending:NO]; 

应财产createDate是一个索引属性?为什么或者为什么不?

+0

什么是索引属性? – dasdom

+0

它是核心数据SQLite数据存储的一部分。在对象模型中,每个属性都可以选择索引。 – bitmoe

+0

我想我从来没有使用索引的属性。你有没有试过它? – dasdom

According to the docs,是的,如果你有一个SQL备份存储。谓词和排序描述符在数据库中编译和评估,您将获得索引优势。

请参阅“获取谓词和排序描述符”部分。

数据库索引附带价格。数据库必须保持索引最新,这会降低插入,删除和可能的更新速度。写性能。

但索引加快查询和订单条款。阅读表现。

这是两者之间的权衡。对你最重要的是什么?阅读或写作表现?

那么,索引有另一个副作用:内存使用。如果你需要对一些条目进行排序,即使只有一次,没有索引,你也必须在内存中排序它们。这意味着将它们加载到内存中,所有这些。至少你正在排序的列,而不是整个事情。但仍然。

一如既往,仪器是决定什么是最好的最佳方法。