

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 尽早在查询中放置限制性筛选条件
<a name="best-practices-content-8"></a>

 在所有情况下，在查询中尽早放置筛选条件有助于减少查询计划必须考虑的中间解决方案。这意味着执行查询所需的内存和计算资源更少。

 以下示例可帮助您了解这些影响。假设您编写了一个查询来返回居住在 `India` 的所有人。查询的一个版本可能是：

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

 上述版本的查询并不是实现此使用案例的最佳方式。筛选条件 `country.name = 'India'` 稍后会出现在查询模式中。它将首先收集所有人员及其居住地，然后按国家/地区对他们进行分组，然后仅筛选出 `country.name = India` 的组。最佳方式是仅查询居住在 `India` 的人然后执行收集聚合。

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

 一般规则是在引入变量后尽快放置筛选条件。