

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

# クエリで \$1id 計算を実行しない
<a name="best-practices-content-16"></a>

 クエリでカスタム 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'}]}
```