

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

# 詳細な関係名を使用してノードラベルの冗長チェックを回避する
<a name="best-practices-content-5"></a>

 パフォーマンスを最適化する場合、ノードパターン専用のリレーションシップラベルを使用すると、ノードのラベルフィルタリングを削除できます。2 つの `person` ノード間の関係を定義するために、関係 `likes` のみが使用されるグラフモデルを考えてみましょう。このパターンを見つけるために、次のクエリを記述できます。

```
MATCH (n:person)-[:likes]->(m:person)
RETURN n, m
```

 n と m の `person` ラベルチェックは冗長です。これは、どちらもタイプ `person` の場合にのみ表示されるように関係を定義しているためです。パフォーマンスを最適化するために、次のようにクエリを記述できます。

```
MATCH (n)-[:likes]->(m)
RETURN n, m
```

 このパターンは、プロパティが 1 つのノードラベルに排他的である場合にも適用できます。`person` ノードのみがプロパティ `email` を持っていると仮定します。したがって、ノードラベルの `person` との一致の検証は冗長です。このクエリを 

```
MATCH (n:person)
WHERE n.email = 'xxx@gmail.com'
RETURN n
```

 のように記述するよりも、次のように記述するほうが効率的です。

```
MATCH (n)
WHERE n.email = 'xxx@gmail.com'
RETURN n
```

 このパターンは、パフォーマンスが重要で、モデリングプロセスでこれらのエッジラベルが他のノードラベルを含むパターンに再利用されないことを確認するチェックがある場合にのみ採用する必要があります。`company` などの別のノードラベルに後で `email` プロパティを導入する場合、これらの 2 つのバージョンのクエリでは結果が異なります。