我是 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
哪种方法在性能方面更好?为什么?
谢谢你。
最佳答案
很抱歉,@a-rodin 的回复在这里是错误的:您的两个语句都产生了完全相同的查询计划。您可以通过在语句前加上 EXPLAIN
来验证这一点。并比较查询计划。
为了可读性,我会构造有问题的查询:
MATCH (p:Person)-[:likes]->(b:Beverage{name:'Beer'}),
(p)-[:likes]->(r:Restaurant{name:'KFC'})
RETURN p.name
这里的查询读起来就像一个简单的英语句子“匹配一个喜欢啤酒和肯德基餐厅的人”。
关于Neo4j:Cypher WHERE 子句与 MATCH 子句中的花括号 - 哪个更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32118750/