여러 노드 업데이트/병합 - Amazon Neptune

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

여러 노드 업데이트/병합

여러 노드에서 MERGE 또는 CREATE 쿼리를 실행할 때는 각 노드마다 MERGE/CREATE 절을 사용하는 대신 단일 MERGE/CREATE 절과 함께 UNWIND를 사용하는 것이 좋습니다. 노드마다 하나의 절을 사용하는 쿼리는 각 행에 대한 최적화가 필요하기 때문에 비효율적인 실행 계획을 초래합니다. 이로 인해 쿼리 실행 시간의 대부분이 실제 업데이트가 아닌 정적 처리 단계에서 소모됩니다.

노드당 하나의 절 방식은 노드 수가 증가함에 따라 확장성이 떨어지므로 최적의 방법이 아닙니다.

MERGE (p1:Person {name: 'NameA'}) ON CREATE SET p1 += {prop1: 'prop1V1', prop2: 'prop2V1'} MERGE (p2:Person {name: 'NameB'}) ON CREATE SET p2 += {prop1: 'prop1V2', prop2: 'prop2V2'} MERGE (p3:Person {name: 'NameC'}) ON CREATE SET p3 += {prop1: 'prop1V3', prop2: 'prop1V3'}

UNWIND를 하나의 MERGE/CREATE 절과 함께 사용하면 동일한 동작을 유지하면서도 더 최적화된 실행 계획을 얻을 수 있습니다. 이를 고려하여 변경된 쿼리는 다음과 같습니다.

## If not using custom id for nodes/relationship UNWIND [{name: 'NameA', prop1: 'prop1V1', prop2: 'prop2V1'}, {name: 'NameB', prop1: 'prop1V2', prop2: 'prop2V2'}, {name: 'NameC', prop1: 'prop1V3', prop2: 'prop1V3'}] AS props MERGE (p:Person {name: props.name}) ON CREATE SET p = props ## If using custom id for nodes/relationship UNWIND [{`~id`: '1', 'name': 'NameA', 'prop1: 'prop1V1', prop2: 'prop2V1'}, {`~id`: '2', name: 'NameB', prop1: 'prop1V2', prop2: 'prop2V2'}, {`~id`: '3', name: 'NameC', prop1: 'prop1V3', prop2: 'prop1V3'}] AS props MERGE (p:Person {`~id`: props.id}) ON CREATE SET p = removeKeyFromMap(props, '~id')