我希望加快查询我的SQL支持的CoreData实例(显示按日期排序的记录) . 我知道索引可以帮助减少查询时间,但有什么区别:
突出显示属性所属的实体,然后将以逗号分隔的属性列表添加到索引字段中,如下所示:
或突出显示该属性,然后检查索引框,如下所示:
在2017年WWDC上,苹果更新了这个,而不是使用 Fetch Index (参见:https://developer.apple.com/videos/play/wwdc2017/210/?time=997)来添加它,选择实体,然后转到 Editor - > Add Fetch Index
Fetch Index
Editor
Add Fetch Index
将具有单个属性的行添加到 Indexes 列表等同于为该属性选择 Indexed :它为该属性创建索引以加速查询语句中的搜索 .
Indexes
Indexed
Indexes 列表适用于复合索引 . 当您知道要在查询的 WHERE 子句中组合这些属性的值时,复合索引很有用:
WHERE
SELECT * FROM customer WHERE surname = "Doe" AND firstname = "Joe";
该语句可以使用复合索引 surname, firstname . 如果您只搜索 surname ,该索引也会有用,但如果您只搜索 firstname 则不会 . 将索引想象成电话簿:它首先按姓氏排序,然后按名字排序 . 因此属性的顺序很重要 .
surname, firstname
surname
firstname
在您的情况下,您应首先选择单个索引(即,选择 Indexed 作为您要搜索的属性) . 例如,如果您只搜索 babyId ,则无法使用您显示的复合索引 .
babyId
2 回答
在2017年WWDC上,苹果更新了这个,而不是使用
Fetch Index
(参见:https://developer.apple.com/videos/play/wwdc2017/210/?time=997)来添加它,选择实体,然后转到Editor
- >Add Fetch Index
将具有单个属性的行添加到
Indexes
列表等同于为该属性选择Indexed
:它为该属性创建索引以加速查询语句中的搜索 .Indexes
列表适用于复合索引 . 当您知道要在查询的WHERE
子句中组合这些属性的值时,复合索引很有用:该语句可以使用复合索引
surname, firstname
. 如果您只搜索surname
,该索引也会有用,但如果您只搜索firstname
则不会 . 将索引想象成电话簿:它首先按姓氏排序,然后按名字排序 . 因此属性的顺序很重要 .在您的情况下,您应首先选择单个索引(即,选择
Indexed
作为您要搜索的属性) . 例如,如果您只搜索babyId
,则无法使用您显示的复合索引 .