3
我有一個Neo4j圖,它由總共100.000個用戶和2.000.000個關係(用戶之間的友誼)組成。 用戶擁有約20個友誼。Neo4j查詢時間太長
現在我試圖找出需要多少時間才能找到特定用戶(深度1),朋友的朋友(深度2)和朋友的朋友的朋友(深度3)的朋友。
這是暗號查詢我跑(用於用戶ID爲86660):
對於深度1
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User)
RETURN u2.name
對於深度2
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User)-[:FRIEND_OF]->(u3:User)
RETURN u3.name
對於深度3
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User)-[:FRIEND_OF]->(u3:User)-[:FRIEND_OF]->(u4:User)
RETURN u4.name
深度1(它返回我17結果)和深度2(它返回320結果)查詢花了幾毫秒,而深度3是無止境的。
如何在合理的時間內得到depth3的結果?
UPDATE
使用配置文件,我得到這樣的:
PROFILE
MATCH (u1:User{idUtente:"86660"})-[:FRIEND_OF]->(u2:User)-[:FRIEND_OF]->(u3:User)-[:FRIEND_OF]->(u4:User)
RETURN u4.name
你可以在你的查詢上運行配置文件併發布擴展視圖 –
我關閉了我的電腦,並在幾分鐘後重新啓動(這是溫暖的,cpu工作非常辛苦)。有一些進程在後臺工作,這使得我的電腦性能很差。我再次重新運行查詢,耗時13秒。順便說一句,我要更新我的問題,包括你要求的擴展視圖。即使我使用的是舊電腦,我認爲我可以做得比13秒更好。 – splunk
你可以嘗試'MATCH(u1:User {idUtente:「86660」}) - [:FRIEND_OF * 3..3] - >(u2:User) RETURN u2.name'只是爲了好玩我不知道如果它將幫助 –