Realm在一对一关系中过滤/排序的效率如何



假设我想找到最近收养一只特定狗的人(人为的例子)。现在我正在做这样的事情:

let realm = try! Realm()
let predicate = NSPredicate(format: "dog.dogId = %@", dogId)
return realm.objects(Person.self).filter(predicate).sorted(byKeyPath: "dog.adoptionDate", ascending: false).first

我的问题是这有多有效?它类似于在典型的关系数据库中执行JOIN吗?如果我想让事情变得更快,那么在person对象上存储dogId和adoptionDate是个好主意吗?还是没有必要?

在链接上排序会有一些开销,但除非您的对象碰巧已经按排序顺序排序,否则这不太可能是重要的,因为排序本身所花费的时间可以忽略不计。

Realm链接通常比关系联接执行得好得多(目标的行号直接存储,而不必执行索引查找(如果您没有为相关列编制索引,则必须执行表扫描),代价是灵活性较差。

最新更新