我对过滤时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
以上两个查询中哪个更好?
答案 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