View a markdown version of this page

Utilisez des cartes aplaties au lieu de cartes imbriquées dans la clause UNWIND - 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.

Utilisez des cartes aplaties au lieu de cartes imbriquées dans la clause UNWIND

Une structure profondément imbriquée peut limiter la capacité du moteur de requêtes à générer un plan de requête optimal. Pour remédier partiellement à ce problème, les modèles définis suivants créeront des plans optimaux pour les scénarios suivants :

  • Scénario 1 : UNWIND avec une liste de littéraux de chiffrement, qui comprend NUMBER, STRING et BOOLEAN.

  • Scénario 2 : UNWIND avec une liste de cartes aplaties, qui inclut uniquement des littéraux de chiffrement (NUMBER, STRING, BOOLEAN) comme valeurs.

Lorsque vous écrivez une requête contenant la clause UNWIND, utilisez la recommandation ci-dessus pour améliorer les performances.

Exemple de scénario 1 :

UNWIND $ids as x MATCH(t:ticket {`~id`: x})

Avec paramètres :

parameters={ "ids": [1, 2, 3] }

Un exemple pour le scénario 2 consiste à générer une liste de nœuds à CRÉER ou à FUSIONNER. Au lieu d'émettre plusieurs instructions, utilisez le modèle suivant pour définir les propriétés sous la forme d'un ensemble de cartes aplaties :

UNWIND $props as p CREATE(t:ticket {title: p.title, severity:p.severity})

Avec paramètres :

parameters={ "props": [ {"title": "food poisoning", "severity": "2"}, {"title": "Simone is in office", "severity": "3"} ] }

Au lieu d'objets de nœud imbriqués tels que :

UNWIND $nodes as n CREATE(t:ticket n.properties)

Avec paramètres :

parameters={ "nodes": [ {"id": "ticket1", "properties": {"title": "food poisoning", "severity": "2"}}, {"id": "ticket2", "properties": {"title": "Simone is in office", "severity": "3"}} ] }