쿼리에서 가능한 한 빨리 제한 필터를 배치합니다. - Amazon Neptune

쿼리에서 가능한 한 빨리 제한 필터를 배치합니다.

모든 시나리오에서 쿼리 내 필터의 조기 배치로 인해 쿼리 계획이 고려해야 하는 중간 해법을 줄일 수 있습니다. 즉, 쿼리를 실행하는 데 필요한 메모리와 컴퓨팅 리소스가 줄어듭니다.

다음 예제는 이러한 영향을 이해하는 데 도움이 됩니다. 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

일반적인 규칙은 변수가 도입된 후 가능한 한 빨리 필터를 배치하는 것입니다.