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

时间:2017-02-05 23:45:31

标签: swift 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吗?如果我想让事情变得更快,那么将dogId和adoptionDate存储在person对象上是一个好主意 - 或者这是不必要的?

1 个答案:

答案 0 :(得分:0)

对链接进行排序会产生一些开销,但除非您的对象恰好已经按排序顺序排列,否则它不太可能很重要,因为排序本身的时间可以忽略不计。

领域链接通常比关系连接表现得更好(目标的行号直接存储,而不是必须执行索引查找(如果你没有索引相关列,则进行表扫描)),以不太灵活为代价。