【发布时间】:2021-09-19 20:38:07
【问题描述】:
我想知道你们中有人遇到过这种奇怪的情况吗?
我试图索引实体中的属性。
例如,对于名为NSPlainNote 的实体,我尝试在属性label 上创建一个名为index_plain_note_label 的索引。
这就是它的样子。
label 的属性看起来也很简单。
但是,如果我检查生成的 SQLite 文件的内容。
似乎创建了 2 个不同名称的相同索引。
CREATE INDEX Z_NSPlainNote_index_plain_note_label ON ZNSPLAINNOTE (ZLABEL COLLATE BINARY ASC)
CREATE INDEX Z_NSPlainNote_label ON ZNSPLAINNOTE (ZLABEL COLLATE BINARY ASC)
如果我们仔细观察,这种重复也会发生在所有其他具有 1 个属性的索引中
- NSPlainNote 的命令
- NSPlainNote 的置顶
- NSTabInfo 的订单
这种重复不会发生在具有 2 个属性的索引或具有唯一约束的索引上。
似乎是一个不受欢迎的结果。因为,拥有索引会降低写入速度。因此,理论上,重复索引会降低写入速度 x2。
我可以知道为什么会这样吗?有没有哪一步我做错了?
【问题讨论】:
-
有趣 - 我尝试它时没有重复,但(奇怪的是)在进行迁移时,CD 确实尝试删除重复的索引。重复项的名称与过去用于先前索引解决方案的名称一致(NSAttributeDescription 现已弃用
isIndexed)。您的标签属性是否可能以前标记为isIndexed? -
@pbasdf 我猜不是。我用
label属性的屏幕截图更新了问题。我的项目是一个尚未公开的全新项目。之前没有进行过迁移。 -
@pbasdf 我想知道,你使用的是什么版本的 XCode?谢谢。
-
在 iPhone 12 Pro Max 模拟器上使用运行 iOS 14.5 的 Xcode 版本 12.5.1 (12E507)。