View a markdown version of this page

Évitez de faire des calculs ~id dans la requête - 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.

Évitez de faire des calculs ~id dans la requête

Lorsque vous utilisez des ID personnalisés dans les requêtes, effectuez toujours des calculs statiques en dehors des requêtes et indiquez ces valeurs dans les paramètres. Lorsque des valeurs statiques sont fournies, le moteur est mieux à même d'optimiser les recherches et d'éviter de scanner et de filtrer ces valeurs.

Si vous souhaitez créer des arêtes entre des nœuds existants dans la base de données, voici une des options suivantes :

UNWIND $sections as section MATCH (s:Section {`~id`: 'Sec-' + section.id}) MERGE (s)-[:IS_PART_OF]->(g:Group {`~id`: 'g1'})

Avec paramètres :

parameters={sections: [{id: '1'}, {id: '2'}]}

Dans la requête ci-dessus, la id valeur de la section est calculée dans la requête. Le calcul étant dynamique, le moteur ne peut pas intégrer les identifiants de manière statique et finit par scanner tous les nœuds de section. Le moteur effectue ensuite un post-filtrage pour les nœuds requis. Cela peut être coûteux s'il existe de nombreux nœuds de section dans la base de données.

Une meilleure façon d'y parvenir est d'ajouter au Sec- début les identifiants transmis à la base de données :

UNWIND $sections as section MATCH (s:Section {`~id`: section.id}) MERGE (s)-[:IS_PART_OF]->(g:Group {`~id`: 'g1'})

Avec paramètres :

parameters={sections: [{id: 'Sec-1'}, {id: 'Sec-2'}]}