2016-04-07 13 views
1

私はちょうど質問する非常に簡単な質問があります。 Neo4jと次の2つのクエリが提供するサンプルムービーデータベースを想定しますフィルタリングプロパティを持つMATCH句またはWHERE句を持つMATCH?

MATCH (n:Person)-[:ACTED_IN]->(m:Movie {title:"The Matrix"}) 
RETURN n,m 

MATCH (n:Person)-[:ACTED_IN]->(m:Movie) 
WHERE m.title = "The Matrix" 
RETURN n,m 

は、計算上同等の2つのクエリはありますか、最初のケースは、より効率的であることの場合ですか?

私はそれを見て、最初のケースでは、MATCHが元のグラフを横切って「オンザフライ」で要求されたサブグラフを生成するように思えます。しかし、2番目のケースでは、より大きなサブグラフがMATCHによって生成され、冗長ノードがフィルタリングされると、要求されたサブグラフに縮小されます。誰でも何とかこの仮定を裏付けることができますか、それとも偽ですか?

答えて

1

neo4jのバージョンが同じかどうかを確認する場合は、profile文を使用してください。詳細はこちらをご覧くださいhttp://neo4j.com/docs/stable/how-do-i-profile-a-query.html

+0

ありがとうございます。それはとても役に立ちました。 2つのクエリがまったく同じように動作しているように見えます。クエリを処理している間に冗長な結果が生成されることを避けるため、フィルタリングが優先されます。 –

関連する問題