You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Realm Swift:为已有属性加索引是否需迁移?现有对象如何处理?

关于Realm Swift SDK添加索引的问题解答

核心问题解答

  1. 能否无冲突添加索引?
    直接修改模型属性为@Persisted(indexed: true) var name: String = ""不会触发架构冲突、显式迁移或同步失败。Realm将添加索引视为非破坏性架构变更,允许这种修改无需额外迁移操作。

  2. 修改声明是否会为现有对象创建索引?
    会。Realm检测到模型的索引声明变更后,会在后台异步为本地Realm中所有现有Foo对象的name属性构建索引,同时新插入的对象也会自动纳入索引。不过由于你有90万条数据,索引构建需要一定时间,期间搜索性能不会立刻提升,等后台任务完成后即可生效。

额外注意事项(针对Atlas Device Sync场景)

如果你的搜索操作涉及云端查询(而非仅本地Realm查询),还需要在MongoDB Atlas控制台中为云端集合的name字段创建对应索引——本地Realm的索引仅作用于本地数据,云端索引需要单独配置才能优化云端查询速度。

手动确认索引状态的方法

如果需要验证索引是否构建完成,可以通过以下方式:

  • 打开Realm Studio连接到本地Realm文件,查看Foo集合的索引列表,确认name索引存在
  • 在代码中通过Realm.schema获取Foo对象的属性信息,检查isIndexed标记是否为true

内容的提问来源于stack exchange,提问作者Bryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 16:32:37