View a markdown version of this page

Placez des filtres restrictifs le plus tôt possible 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.

Placez des filtres restrictifs le plus tôt possible dans la requête

Dans tous les scénarios, le placement précoce de filtres dans la requête permet de réduire le nombre de solutions intermédiaires qu'un plan de requête doit envisager. Cela signifie que moins de mémoire et de ressources de calcul sont nécessaires pour exécuter la requête.

L'exemple suivant vous aide à comprendre ces impacts. Supposons que vous écriviez une requête pour renvoyer toutes les personnes qui vivent dansIndia. L'une des versions de la requête pourrait être la suivante :

MATCH (n)-[:lives_in]->(city)-[:part_of]->(country) WITH country, collect(n.firstName + " " + n.lastName) AS result WHERE country.name = 'India' RETURN result

La version ci-dessus de la requête n'est pas la manière la plus optimale de réaliser ce cas d'utilisation. Le filtre country.name = 'India' apparaît plus loin dans le modèle de requête. Il collectera d'abord toutes les personnes et leur lieu de résidence, puis les regroupera par pays, puis filtrera uniquement le groupe pourcountry.name = India. Le moyen optimal d'effectuer des recherches uniquement pour les personnes vivant dans le pays, India puis d'effectuer l'agrégation des collectes.

MATCH (n)-[:lives_in]->(city)-[:part_of]->(country) WHERE country.name = 'India' RETURN collect(n.firstName + " " + n.lastName) AS result

Une règle générale consiste à placer un filtre dès que possible après l'introduction de la variable.