制限付きフィルターをクエリのできるだけ早い段階で配置する - Amazon Neptune

制限付きフィルターをクエリのできるだけ早い段階で配置する

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

次の例は、これらの影響を理解するのに役立ちます。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

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