翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
詳細な関係名を使用して、ノードラベルの重複チェックを回避する
パフォーマンスを最適化するときは、ノードパターン専用のリレーションシップラベルを使用すると、ノードのラベルフィルタリングを削除できます。関係likes
が 2 つのperson
ノード間の関係の定義にのみ使用されるグラフモデルを考えてみましょう。このパターンを見つけるために、次のクエリを記述できます。
MATCH (n:person)-[:likes]->(m:person) RETURN n, m
n と m のperson
ラベルチェックは冗長です。両方の タイプが の場合にのみ表示されるように関係を定義しましたperson
。パフォーマンスを最適化するために、クエリを次のように記述できます。
MATCH (n)-[:likes]->(m) RETURN n, m
このパターンは、プロパティが単一のノードラベルに排他的である場合にも適用できます。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 つのバージョンのクエリによって結果が異なるようになります。