

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 盡可能避免使用 WITH 子句
<a name="best-practices-content-7"></a>

 openCypher 中的 WITH 子句充當執行所有項目前的邊界，然後將產生的值傳遞至查詢的剩餘部分。當您需要臨時彙總或想要限制結果數量時，除了應該避免使用 WITH 子句之外，還需要 WITH 子句。一般指引是移除這些簡單的 WITH 子句 （不彙總、排序或限制），讓查詢規劃器能夠處理整個查詢，以建立全域最佳計劃。例如，假設您撰寫查詢來傳回所有住在 的人`India`：

```
MATCH (person)-[:lives_in]->(city)
WITH person, city
MATCH (city)-[:part_of]->(country {name: 'India'})
RETURN collect(person) AS result
```

 在上述版本中， WITH 子句會限制在 之前放置模式 `(city)-[:part_of]->(country {name: 'India'})`（較嚴格）`(person)-[:lives_in]->(city)`。這會使計劃次佳。此查詢的最佳化是移除 WITH 子句，並讓規劃器運算最佳計劃。

```
MATCH (person)-[:lives_in]->(city)
MATCH (city)-[:part_of]->(country {name: 'India'})
RETURN collect(person) AS result
```