17

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

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

在此处输入图像描述

或突出显示属性,然后选中索引框,如下所示:

在此处输入图像描述

4

2 回答 2

14

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

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

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

该语句可以使用复合索引surname, firstname。如果您只搜索 ,该索引也很有用surname,但如果您只搜索firstname. 将索引想象成电话簿:首先按姓氏排序,然后按名字排序。所以属性的顺序很重要。

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

于 2016-07-15T06:49:05.420 回答
8

在 WWDC 2017 上,苹果将其更新为使用 a 来完成Fetch Index(请参阅:https ://developer.apple.com/videos/play/wwdc2017/210/?time=997 )要添加它,请选择实体,然后转到到Editor->Add Fetch Index

于 2018-02-08T16:20:51.897 回答