Neo4j:Cypher WHERE Clause与MATCH条款中的Curly Braces - 哪个更好?

时间:2015-08-20 12:50:11

标签: neo4j cypher

我是Neo4J的新手,过去几天一直在学习Cypher查询语言。

我意识到我可以这样写我的查询...

MATCH (b:Beverage)<-[:likes]-(p:Person)-[:likes]->(r:Restaurant) 
WHERE b.name = 'Beer' and r.name = 'KFC'
RETURN p.name

......或者像这样...

MATCH (b:Beverage{name:'Beer'})<-[:likes]-(p:Person)-[:likes]->(r:Restaurant{name:'KFC'}) 
RETURN p.name

哪种方法在性能方面更好?为什么?

谢谢。

1 个答案:

答案 0 :(得分:6)

我很遗憾地说,但@ a-rodin的回复在这里是错误的:你的两个陈述都会产生相同的查询计划。您可以通过在语句前添加EXPLAIN前缀并比较查询计划来验证。

为了便于阅读,我构建了有问题的查询:

MATCH (p:Person)-[:likes]->(b:Beverage{name:'Beer'}),
      (p)-[:likes]->(r:Restaurant{name:'KFC'}) 
RETURN p.name

这里的查询读起来像一个简单英语的句子&#34;匹配喜欢啤酒的人和喜欢肯德基餐厅的人#34;。