翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
クエリで ~id 計算を実行しない
クエリでカスタム ID を使用する場合は、常にクエリの外部で静的計算を実行し、パラメータにこれらの値を指定します。静的値を指定すると、エンジンはルックアップを最適化し、これらの値のスキャンとフィルタリングを回避できます。
データベースに存在するノード間にエッジを作成する方法の 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'}]}