쿼리에서 ~id 계산 수행 안 함 - Amazon Neptune

쿼리에서 ~id 계산 수행 안 함

쿼리에서 사용자 지정 ID를 사용하는 경우 항상 쿼리 외부에서 정적 계산을 수행하고 파라미터에 이러한 값을 제공합니다. 정적 값이 제공되면 엔진이 조회를 최적화하고 이러한 값을 스캔하고 필터링하지 않아도 됩니다.

데이터베이스에 있는 노드 간에 엣지를 생성하려는 경우 한 가지 옵션은 다음과 같습니다.

UNWIND $sections as section MATCH (s:Section {`~id`: 'Sec-' + section.id}) MERGE (s)-[:IS_PART_OF]->(g:Group {`~id`: 'g1'})

파라미터 포함:

parameters={sections: [{id: '1'}, {id: '2'}]}

위의 쿼리에서 섹션의 id가 쿼리 내에서 계산되고 있습니다. 계산은 동적이므로 엔진은 정적 인라인 ID를 사용할 수 없으며 결국 모든 섹션 노드를 스캔합니다. 그런 다음 엔진은 필요한 노드에 대해 후처리 필터링을 수행합니다. 데이터베이스에 섹션 노드가 많은 경우 비용이 많이 들 수 있습니다.

이를 달성하는 더 나은 방법은 데이터베이스로 전달되는 id 앞에 Sec-를 접두사로 추가하는 것입니다.

UNWIND $sections as section MATCH (s:Section {`~id`: section.id}) MERGE (s)-[:IS_PART_OF]->(g:Group {`~id`: 'g1'})

파라미터 포함:

parameters={sections: [{id: 'Sec-1'}, {id: 'Sec-2'}]}