ios - 核心数据。索引和索引之间有什么区别?

标签 ios sqlite core-data nsmanagedobject nsmanagedobjectmodel

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

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

enter image description here

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

enter image description here

最佳答案

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

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

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

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

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

关于ios - 核心数据。索引和索引之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35907115/

相关文章:

ios - 将 `NSMutableArray` 的实例添加到 `NSArray` 对象中

ios - 返回按钮调用方法

android - 以先进先出(FIFO)顺序从sqlite数据库中提取Android

iphone - 使用 coredata 存储/缓存非标准数据类型

ios - 如何删除核心数据中的对象

IOS - 如何在 Core Data Swift 中将数据插入具有关系的不同表中

ios - xcode 在尝试设置 map 路由时意外退出

ios - 一张带有 alpha 滞后 spritekit 的图像

mysql - Rails 切换数据库

sql - 如何使用 IN 命令保留 SQL 查询的顺序