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 d'utiliser la clause WITH dans la mesure du possible
La clause WITH d'OpenCypher agit comme une limite où tout ce qui se trouve avant son exécution est transmis aux parties restantes de la requête. La clause WITH est nécessaire lorsque vous avez besoin d'une agrégation intermédiaire ou que vous souhaitez limiter le nombre de résultats, mais en dehors de cela, vous devez essayer d'éviter d'utiliser la clause WITH. Les instructions générales consistent à supprimer ces clauses WITH simples (sans agrégation, ordre par ou limite) pour permettre au planificateur de requêtes de travailler sur l'ensemble de la requête afin de créer un plan global optimal. À titre d'exemple, supposons que vous ayez écrit une requête pour renvoyer toutes les personnes vivant dans India :
MATCH (person)-[:lives_in]->(city) WITH person, city MATCH (city)-[:part_of]->(country {name: 'India'}) RETURN collect(person) AS result
Dans la version ci-dessus, la clause WITH limite le placement du motif (city)-[:part_of]->(country {name: 'India'}) (ce qui est plus restrictif) avant(person)-[:lives_in]->(city). Cela rend le plan sous-optimal. Une optimisation de cette requête serait de supprimer la clause WITH et de laisser le planificateur calculer le meilleur plan.
MATCH (person)-[:lives_in]->(city) MATCH (city)-[:part_of]->(country {name: 'India'}) RETURN collect(person) AS result