哪种是在cypher查询中过滤的更好方法

时间:2016-03-29 06:30:28

标签: neo4j cypher

我对过滤时cypher查询的优化有疑问。 实体和地址节点之间存在关系。这是两个查询 -

match(a:Address)<-[r]-(e:Entity) where a.addressLocation=~".*(?i)ABC XYZ.*" return r

match(e:Entity)-[r]->(a:Address) where a.addressLocation=~".*(?i)ABC XYZ.*" return r

以上两个查询中哪个更好?

1 个答案:

答案 0 :(得分:1)

使用命令

profile match(a:Address)<-[r]-(e:Entity) where a.addressLocation=~".*(?i)ABC XYZ.*" return r
profile match(e:Entity)-[r]->(a:Address) where a.addressLocation=~".*(?i)ABC XYZ.*" return r

在这两个查询中查看您的neo版本是否有任何区别。 另外我建议如果你知道有少量的地址a.addressLocation=~".*(?i)ABC XYZ.*" 尝试使用像

这样的查询
 match(a:Address) where a.addressLocation=~".*(?i)ABC XYZ.*" 
 with a Match (a)<-[r]-(e:Entity) return r

要了解有关分析的详情,请查看此处http://neo4j.com/docs/stable/execution-plans.html