2017-08-26 37 views
0

我上網了,但經過幾個小時還沒有意識到,如果最好使用謂詞或關係來獲取數據以獲得最佳性能。這是我的場景,假設我有兩個實體Entity AEntity BEntity AEntity B一對多關係。 Entity A -->> Entity B在Core-Data中使用謂詞或關係有什麼更好?

都得到來自web服務的信息,然後使用關係選項,我首先從實體的信息,填補了Entity B,當我填寫Entity A我需要從Entity B執行獲取該有與我的Entity A(這對於我的Entity A中的每個記錄)的關係假設對於id字段,,並且必須將每個匹配添加到核心數據關係。

在另一方面,這是沒有關係,我只需要填寫兩個實體,當我需要從Entity B相關Entity A記錄只是執行與謂詞id字段爲獲取請求就是這樣。

乍一看似乎是使用引用第一種情況是效率較低,但我不知道,如果使用的關係有後續搜索和應用程序的總體操作的性能優越。

我希望有人能幫助我澄清我的懷疑。謝謝

+0

如果你有太多的屬性,並不總是需要所有的東西,並且打算將來使用更多的關係,請使用兩種關係。否則,只能使用一個對象。應該衡量「表現」。 0.01秒太多的性能突破對你來說?或者,也許你正在導入數百萬個對象?誰知道。你試過什麼了 。爲什麼不只是創建一個空的項目並用你的特定用例進行測試呢? – 2017-08-26 18:16:47

+0

感謝您的回覆潛行,我的意圖與這個問題是要知道在coredata的關係的好處,我沒有作出證明創建一個項目和測試這兩種情況,因爲你說,因爲我認爲第一案件將採取更多由於讀取和添加過程的時間。更具體地說,我的表A將包含最多1k條記錄,但我的表B可以保存至少100k –

+1

我明白了。那麼,由於iOS/CoreData和NSFetchedResultsController會爲您執行內存管理,因此表保存的項目數不是最重要的。除非你手動做所有那些沒有NSFCtrl的東西。即使在沒有關係的對象中有許多屬性,也可以指定要提取的屬性以避免使用比需要更多的內存。你應該閱讀關於錯誤:https://developer.apple.com/library/content/documentation/Cocoa/Conceptual/CoreData/FaultingandUniquing.html。另外,我建議你不要專注於「表現」,而是你的結構...... – 2017-08-26 22:07:46

回答

1

我有一個類似的聊天應用程序的經驗。聊天和聊天中的每條消息都可以有許多消息(超過1000條是常見的)。我想查找某種類型的所有消息(例如所有視頻消息)。在消息上運行提取請求比在關係上運行謂詞要慢10到100倍。

與fetchRequests相比,關係非常快。