2016-09-29 3 views
0

동일한 속성 값을 가진 모든 노드 간의 관계를 만들어야합니다.동일한 속성을 가진 노드 간의 관계 만들기

예를 들어 나는 다음과 같은 쿼리를 사용할 수 있습니다

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

을하지만 약 20 만 노드가있는 경우,이 스크립트는 매우 긴 실행.

이러한 관계를 만드는 더 빠른 방법이 있습니까?

감사

답변

1

당신이 다음 실제로 관련된 사람을 찾기 위해 각 쌍 필터링 않습니다 먼저 쓴 사람의 모든 노드 짝 사이 카티 제품을 생성하는 쿼리는 다음의 관계를 만듭니다. 그것은 매우 비싸고 n^2 작업입니다.

대신 모든 Person 노드를 한 번만 살펴보고 해당 개인 노드를 속성으로 찾고 관계를 만들 수 있습니다.

또한 해당 속성에 대한 색인 또는 고유 제한 조건이있는 경우 성능이 크게 향상되어야합니다. 그렇지 않으면 각 비교와 함께 해당 레이블의 모든 노드에 대한 노드 검사가되고 느린 것에 대한 또 다른 요인이됩니다 질문.

또한 수천 또는 수십만 개의 결과가 있다고 가정 할 때 가능하면 노드와 관계를 반환하지 않는 것이 좋습니다. 그것은 아마도 다른 요소 일 것입니다.

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

이 쿼리와 이전 쿼리 모두를 EXPLAIN 할 수 있어야하며 둘 다 어떻게 실행되는지 확인할 수 있어야합니다.

+0

많은 감사합니다. 그게 나에게 위대한 작품 –

관련 문제