翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
クエリで ~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'}]}