我的圖形數據庫中有大約10k個用戶節點。我知道它不是太多,但我正在尋找我的案例的最佳解決方案。哪種情況下性能更好
我需要標記一些用戶並在以後查詢。
我想出了兩個解決方案(至少現在),但我無法確定哪一個解決方案最適合性能,您如何看待我的可能解決方案?
1 - 我可以添加新屬性給我所有的用戶節點默認值爲false。
MATCH (u:User) SET u.marked = false
之後,我會爲所有需要稍後查詢的用戶設置標記屬性爲true。可以說有50個。
後來,當我需要的那些標記的用戶,我會查詢,如:
MATCH (u:User) WHERE u.marked = true RETURN u
2 - 我可以新屬性僅添加到這些用戶,我將在以後需要,不修改其他用戶節點。像下面這樣:
MATCH (u:User) WHERE u.id IN [...,123,456,789,...] SET u.marked = true
後來,當我需要顯着的用戶,我會查詢,如:
MATCH (u:User) WHERE u.marked = true RETURN u
或
MATCH (u:User) WHERE EXISTS(u.marked) AND u.marked = true RETURN u
如果你知道解決我的問題的另一種方式,我是徵求意見。
在此先感謝。
您可以將標記的用戶標識存儲在單獨的表中。當你需要再次標記它們時,你只需清除以前的結果並保存新的結果。如果需要,稍後可以輕鬆添加其他屬性。 – Edgar
在查詢之前使用'PROFILE'會得到它的詳細信息。 like'PROFILE MATCH(u:User)WHERE u.marked = true RETURN u' –
只要你知道,在描述的第二個選項中,u.marked = true的匹配就足夠了。這裏不需要存在檢查。 – InverseFalcon