View a markdown version of this page

Updating/Merging plusieurs nœuds - Amazon Neptune

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Updating/Merging plusieurs nœuds

Lors de l'exécution MERGE ou CREATE des requêtes sur plusieurs nœuds, il est recommandé d'utiliser une UNWIND combinaison avec une seule MERGE/CREATE clause plutôt que d'utiliser une MERGE/CREATE clause pour chaque nœud. Les requêtes qui utilisent une clause pour un nœud entraînent un plan d'exécution inefficace car chaque ligne nécessite une optimisation. Cela signifie que la majeure partie du temps d'exécution de la requête est consacrée au traitement statique au lieu de la mise à jour proprement dite.

Une clause par nœud n'est pas optimale car elle ne s'adapte pas à l'augmentation du nombre de nœuds :

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'utilisation d'une clause UNWIND en conjonction avec une MERGE/CREATE clause permet d'obtenir le même comportement mais un plan d'exécution plus optimal. Dans cet esprit, la requête modifiée ressemblerait à ceci :

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