クエリで ~id 計算を実行しない - Amazon Neptune

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

クエリで ~id 計算を実行しない

クエリでカスタム IDs を使用する場合は、常にクエリの外部で静的計算を実行し、パラメータにこれらの値を指定します。静的な値を指定すると、エンジンはルックアップを最適化し、これらの値のスキャンとフィルタリングを回避できます。

データベースに存在するノード間にエッジを作成する場合、1 つのオプションは次のとおりです。

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'}]}