我有一个使用 Realm Swift SDK 的应用程序,并通过 MongoDB Atlas Device Sync 同步到云。数据库中有 900,000 个这样的模型对象:
final class Foo: Object
{
@Persisted var name: String = ""
}
我可以向此属性添加索引吗而不有任何架构违规、迁移或同步失败吗?我可以将声明更改为此并创建索引吗?
@Persisted(indexed: true) var name: String = ""
如果这不索引现有对象上的属性,那么向这些对象添加索引的过程是什么? (当然,最终目标是加快搜索速度。)
如果我更改声明,应用程序构建并运行得很好,但因为索引是在插入时创建/更新的,所以我不确定仅仅更改声明实际上对数据库中的现有对象有任何作用。
我did先在MongoDB论坛上问这个问题,但没有得到回应。
打开 Realm 时会自动创建或销毁索引。它们没有任何仪式,因为与其他架构更改不同,它们不会丢失数据。如果您不小心删除了一个属性,然后在更高版本中恢复它,则该属性的数据就会消失,而如果您不小心删除了一个索引,然后恢复它,一切都很好。
索引是一个纯粹的本地概念,不以任何方式与同步交互。
您应该能够通过打开和关闭索引并且不进行其他更改来衡量查询的性能差异。如果没有任何变化,这表明您没有任何可以从索引中受益的查询。