CoreData。索引和索引之间有什么区别?

时间:2016-03-10 03:37:54

标签: ios sqlite core-data nsmanagedobject nsmanagedobjectmodel

我希望加快查询到我的SQL支持的CoreData实例(显示按日期排序的记录)。我知道索引可以帮助减少查询时间,但有什么区别:

突出显示属性所属的实体,然后将以逗号分隔的属性列表添加到索引字段中,如下所示:

enter image description here

或者突出显示属性,然后检查索引框,如下所示:

enter image description here

2 个答案:

答案 0 :(得分:8)

将具有单个属性的行添加到Indexes列表等同于为该属性选择Indexed:它为该属性创建索引以加速查询语句中的搜索。

Indexes列表适用于复合索引。当您知道要在查询的WHERE子句中搜索这些属性的值时,复合索引很有用:

SELECT * FROM customer WHERE surname = "Doe" AND firstname = "Joe";

此声明可以使用复合索引surname, firstname。如果您只是搜索surname,那么该索引也会很有用,但如果您只搜索firstname则不会。将索引想象成电话簿:它首先按姓氏排序,然后按名字排序。所以属性的顺序很重要。

在您的情况下,您应首先选择单个索引(即,为您要搜索的属性选择Indexed)。如果您只是搜索babyId,则无法使用您显示的复合索引。

答案 1 :(得分:1)

在WWDC 2017上,Apple更新了此内容,而不是使用Fetch Index(请参阅:https://developer.apple.com/videos/play/wwdc2017/210/?time=997) 要添加它,请选择该实体,然后转到Editor - > Add Fetch Index