Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Aggiornamento/unione di più nodi
Durante l'esecuzione MERGE o CREATE le interrogazioni su più nodi, si consiglia di utilizzare una clausola UNWIND in combinazione con una singola MERGE/CREATE clausola anziché utilizzare una clausola per ogni nodo. MERGE/CREATE Le query che utilizzano una clausola per un nodo portano a un piano di esecuzione inefficiente a causa del fatto che ogni riga richiede un'ottimizzazione. Ciò comporta che la maggior parte del tempo di esecuzione della query venga impiegato nell'elaborazione statica anziché nell'aggiornamento effettivo.
Una clausola per nodo non è ottimale in quanto non si adatta all'aumentare del numero di nodi:
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'}
L'utilizzo di una UNWIND in combinazione con una MERGE/CREATE clausola consente lo stesso comportamento ma un piano di esecuzione più ottimale. Con questo in mente, la query modificata avrebbe il seguente aspetto:
## 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')