Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Elusión de la cláusula WITH cuando sea posible
La cláusula WITH en openCypher actúa como un límite donde se ejecuta todo lo que hay antes de ella y, a continuación, los valores resultantes se pasan al resto de partes de la consulta. La cláusula WITH es necesaria cuando se requiere una agregación provisional o se desea limitar el número de resultados, pero, aparte de eso, se debe intentar evitar su uso. La recomendación general consiste es eliminar estas cláusulas WITH simples (sin agregación, ordenación o limitación) para que el planificador de consultas pueda trabajar en toda la consulta y crear un plan óptimo en su conjunto. Por ejemplo, supongamos que ha escrito una consulta para obtener todas las personas que viven enIndia:
MATCH (person)-[:lives_in]->(city) WITH person, city MATCH (city)-[:part_of]->(country {name: 'India'}) RETURN collect(person) AS result
En la versión anterior, la cláusula WITH restringe la ubicación del patrón (city)-[:part_of]->(country {name: 'India'}) (que es más restrictivo) antes de (person)-[:lives_in]->(city). De este modo, el plan no es óptimo. Para optimizar esta consulta, se podría eliminar la cláusula WITH y dejar que el planificador calcule el mejor plan.
MATCH (person)-[:lives_in]->(city) MATCH (city)-[:part_of]->(country {name: 'India'}) RETURN collect(person) AS result