

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 偏好使用節點/關係IDs
<a name="best-practices-content-15"></a>

 Neptune 允許使用者在節點和關係上明確指派 IDs。ID 在資料集中必須是全域唯一的，並且確定性才有用。決定性 ID 可以用作查詢或篩選機制，就像屬性一樣；不過，使用 ID 從查詢執行角度比使用屬性來得最佳化。使用自訂 IDs 有幾個好處 - 
+  現有實體的屬性可以是 null，但 ID 必須存在。這可讓查詢引擎在執行期間使用最佳化聯結。
+  執行並行變動查詢時，當 IDs用於存取節點時，並[行修改例外](https://docs.aws.amazon.com//neptune/latest/userguide/transactions-exceptions.html)狀況 (CMEs) 的機率會大幅降低，因為 IDs 的鎖定數會比屬性來得少，因為其強制執行的唯一性。
+  使用 IDs 可避免建立重複資料的機會，因為 Neptune 會在 IDs上強制執行唯一性，與屬性不同。

 下列查詢範例使用自訂 ID：

**注意**  
 屬性`~id`用於指定 ID，而 `id`僅儲存為任何其他屬性。

```
CREATE (n:Person {`~id`: '1', name: 'alice'})
```

 不使用自訂 ID：

```
CREATE (n:Person {id: '1', name: 'alice'})
```

 如果使用後者機制，則沒有唯一性強制執行，您可以稍後執行查詢：

```
CREATE (n:Person {id: '1', name: 'john'})
```

 這會建立`id=1`名為 的第二個節點`john`。在此案例中，您現在將有兩個具有 的節點`id=1`，每個節點都有不同的名稱 - (alice 和 john)。