View a markdown version of this page

Updating/Merging nodi multipli - Amazon Neptune

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à.

Updating/Merging nodi multipli

Quando si eseguono MERGE CREATE query su più nodi, si consiglia di utilizzare una clausola UNWIND in combinazione con una singola MERGE/CREATE clausola anziché utilizzare una MERGE/CREATE clausola per ogni nodo. Le query che utilizzano una clausola per un nodo comportano un piano di esecuzione inefficiente a causa del fatto che ogni riga richiede l'ottimizzazione. Ciò fa sì 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 è scalabile con l'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 clausola 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 sarebbe simile a:

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