翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
詳細な関係名を使用してノードラベルの冗長チェックを回避する
パフォーマンスを最適化する場合、ノードパターン専用のリレーションシップラベルを使用すると、ノードのラベルフィルタリングを削除できます。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
このパターンは、パフォーマンスが重要で、モデリングプロセスでこれらのエッジラベルが他のノードラベルを含むパターンに再利用されないことを確認するチェックがある場合にのみ採用する必要があります。などの別のノードラベルに emailプロパティを後で導入する場合company、これらの 2 つのバージョンのクエリ間で結果は異なります。