2017-02-05 11 views
0

Предположим, я хотел получить человека, который недавно принял конкретную собаку (надуманный пример). Сейчас я делаю что-то вроде этого:Насколько эффективно 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 и принятиеDate в объекте person - или это не нужно?

ответ

0

Есть некоторые накладные расходы при сортировке по ссылке, но это вряд ли будет значительным, если только ваши объекты не будут в отсортированном порядке, так как тогда сам сортировка займет незначительное время.

Ссылки на каналы обычно выполняются значительно лучше, чем реляционные соединения (номер строки цели хранится напрямую, вместо того, чтобы выполнять поиск по индексу (или сканирование таблицы, если вы не проиндексировали соответствующие столбцы)), при стоимость быть менее гибкой.

 Смежные вопросы

  • Нет связанных вопросов^_^