

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 制限付きフィルターをクエリのできるだけ早い段階で配置する
<a name="best-practices-content-8"></a>

 すべてのシナリオで、クエリへのフィルターの早期配置は、クエリプランが考慮する必要がある中間ソリューションを減らすのに役立ちます。つまり、クエリの実行に必要なメモリとコンピューティングリソースが少なくなります。

 次の例は、これらの影響を理解するのに役立ちます。`India` に住むすべてのユーザーを返すクエリを記述するとします。クエリの 1 つのバージョンは次のとおりです。

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

 原則として、変数の導入後できるだけ早くフィルターを配置します。