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.
Updating/Merging varios nodos
Al ejecutar MERGE o CREATE realizar consultas en varios nodos, se recomienda usar una combinación con una sola MERGE/CREATE cláusula UNWIND en lugar de usar 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 MERGE/CREATE cláusula junto con una sola 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')