

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
<a name="best-practices-content-7"></a>

 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 en`India`: 

```
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
```