기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
세분화된 관계 이름을 사용하여 중복 노드 레이블 확인 방지
성능 최적화를 위해 노드 패턴에 고유한 관계 레이블을 사용하면 노드에 대한 레이블 필터링을 제거할 수 있습니다. 그래프 모델에서 likes 관계가 두 person 노드 간의 관계 정의에만 사용된다고 가정해 보세요. 이 패턴을 찾기 위해 다음과 같은 쿼리를 작성할 수 있습니다.
MATCH (n:person)-[:likes]->(m:person) RETURN n, m
person 레이블 검사는 n과 m 모두 person 유형일 때만 관계가 나타나도록 정의했으므로 중복됩니다. 성능을 최적화하기 위해 다음과 같이 쿼리를 작성할 수 있습니다.
MATCH (n)-[:likes]->(m) RETURN n, m
이 패턴은 속성이 단일 노드 레이블에 독점적으로 적용될 때도 적용될 수 있습니다. person 노드만 email 속성을 가질 경우, 노드 레이블이 person과 일치하는지 확인하는 것은 중복됩니다. 이 쿼리를 다음과 같이 작성할 수 있습니다.
MATCH (n:person) WHERE n.email = 'xxx@gmail.com' RETURN n
이 쿼리를 다음과 같이 작성하는 것보다 효율성이 떨어집니다.
MATCH (n) WHERE n.email = 'xxx@gmail.com' RETURN n
성능이 중요하고 모델링 과정에서 이러한 엣지 레이블이 다른 노드 레이블 관련 패턴에 재사용되지 않도록 확인 절차가 마련된 경우에만 이 패턴을 채택해야 합니다. 이후 company와 같은 다른 노드 레이블에 email 속성을 추가하면 두 버전의 쿼리 결과는 달라질 것입니다.