簡體   English   中英

在具有相同屬性的節點之間創建關系

[英]Creating relationships between nodes with same properties

我需要在所有具有相同屬性值的節點之間創建關系。

例如,我可以使用以下查詢:

match (p1:Person), (p2:Person)
where p1 <> p2 and p1.someproperty = p2.someproperty
merge(p1)-[r:Relationship]-(p2)
return p1,r, p2

但是,如果我有大約200k節點,則此腳本將運行很長時間。

還有其他更快的方式來建立這種關系嗎?

謝謝

您編寫的查詢首先在所有配對的人節點之間創建笛卡爾乘積,然后對每個配對進行過濾以找到實際相關的配對,然后創建關系。 那是非常昂貴的,n ^ 2運算。

取而代之的是,您可能只想遍歷所有Person節點,並找到具有該屬性的對應person節點,然后創建關系。

此外,如果對相關屬性有索引或唯一約束,則應該看到性能大大提高,否則,將是每次比較時對該標簽中所有節點的節點掃描,這也是導致查詢緩慢的另一個原因。

另外,我鼓勵您不要返回節點和關系(如果可能的話),假設它在成千上萬的結果附近。 那可能是另一個因素。

match (p1:Person)
with p1
match (p2:Person)
where p2.someproperty = p1.someproperty and p1 <> p2
merge(p1)-[r:Relationship]-(p2)

您應該能夠同時解釋此查詢和舊查詢,並查看它們將如何運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM