我試圖通過neo4j瞭解高效的使用模式,特別是參考高度節點。爲了說明我在說什麼,我有User
具有我已經建模爲節點的屬性的節點。所以我的表中有關係,如neo4j中的高度節點
(:User)-[:HAS_ATTRIB]->(:AgeCategory)
等等等等。問題是,一些AgeCategory
節點都是非常高的程度,10萬的量級,和查詢等
MATCH (u:User)-->(:AgeCategory)<--(v:User), (u)-->(:FavoriteLanguage)<--(v)
WHERE u.uid = "AAA111" AND v.uid <> u.uid
RETURN v.uid
(匹配共享同一年齡組和最喜歡的語言作爲AAA111
所有用戶)是非常,非常慢,因爲你必須爲AgeCategory
鏈表中的每個元素運行一次FavoriteLanguage
鏈表(或者至少這是我的理解)。
我認爲從這個查詢需要幾分鐘的時間來解決我做錯了事情的事實很清楚,但我很好奇處理這樣的查詢的正確過程是什麼。我應該從每個查詢中分別查找匹配的用戶,並將它們與內存中的哈希進行比較?有沒有辦法將索引放在節點上的關係上?這是一個模式開始的好主意嗎?