View a markdown version of this page

Actualización/fusión de varios nodos - Amazon Neptune

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Actualización/fusión de varios nodos

Al ejecutar CREATE consultas MERGE o ejecutar consultas en varios nodos, se recomienda utilizar una UNWIND en combinación con una sola MERGE/CREATE cláusula en lugar de utilizar una MERGE/CREATE cláusula para cada nodo. Las consultas que utilizan una cláusula para cada nodo dan lugar a un plan de ejecución ineficiente, ya que cada línea requiere de una optimización. Esto conlleva que la mayor parte del tiempo de ejecución de la consulta se dedique al procesamiento estático, en lugar de a la actualización real.

Una cláusula por nodo no es óptima, ya que no es escalable con el aumento del número de nodos:

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'}

El uso UNWIND de una junto con una MERGE/CREATE cláusula permite el mismo comportamiento pero un plan de ejecución más óptimo. En este sentido, la consulta modificada quedaría así:

## 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')