可能な場合は WITH 句を使用しない - Amazon Neptune

可能な場合は WITH 句を使用しない

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 句は (person)-[:lives_in]->(city) より前のパターン (city)-[:part_of]->(country {name: 'India'}) (より制限的) の配置を制限します。そのため、このプランは準最適となります。このクエリを最適化するには、WITH 句を削除し、プランナーが最適なプランを計算できるようにします。

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