使用Cypher中的match({property})和WHERE子句的区别

5
我注意到 match(a:Vegetable{name:'Cellery'}) return amatch(a:Vegetable) where a.name='Cellery' return a 返回相同的结果。这两种形式之间有实际上的区别吗?当您知道属性值时,第一种形式似乎很有效,但是否可以使用通配符或LIKE条件呢?
1个回答

8

EXPLAINPROFILE 选项 显示查询的执行计划。

它们在空数据库上显示完全相同的执行计划。

enter image description here

enter image description here

因此,性能方面,这两种表示法应该完全相同。

当你知道属性值时,第一种形式似乎很有效,但是否有一种方法可以使用通配符或 LIKE 条件?

没错,WHERE 可以给你更多的灵活性。基本上,MATCH 子句只允许你检查相等性,它可以写成 WHERE a.prop1 = value1 AND a.prop2 = value2 AND ...。与此同时,WHERE 允许你更多:逻辑运算符 AND/OR/XORNOT,检查不等式;使用 STARTS WITHCONTAINSENDS WITH 和正则表达式;检查节点类型,例如 WHERE (a:SomeLabel),甚至检查匹配变量是否是模式的一部分,例如 WHERE NOT (a)-[:SOME_REL]->(:SomeLabel)


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接