我是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
哪种方法在性能方面更好?为什么?
谢谢。
答案 0 :(得分:6)
我很遗憾地说,但@ a-rodin的回复在这里是错误的:你的两个陈述都会产生相同的查询计划。您可以通过在语句前添加EXPLAIN
前缀并比较查询计划来验证。
为了便于阅读,我构建了有问题的查询:
MATCH (p:Person)-[:likes]->(b:Beverage{name:'Beer'}),
(p)-[:likes]->(r:Restaurant{name:'KFC'})
RETURN p.name
这里的查询读起来像一个简单英语的句子&#34;匹配喜欢啤酒的人和喜欢肯德基餐厅的人#34;。