翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
制限付きフィルターをクエリのできるだけ早い段階で配置する
すべてのシナリオで、クエリにフィルターを早期に配置すると、クエリプランが考慮する必要がある中間ソリューションを減らすのに役立ちます。つまり、クエリの実行に必要なメモリとコンピューティングリソースが少なくなります。
次の例は、これらの影響を理解するのに役立ちます。に住むすべてのユーザーを返すクエリを記述するとします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
一般的なルールは、変数が導入された後できるだけ早くフィルターを配置することです。