如何解决Neo4J编写密码查询的正确方法
此刻,我有以下密码查询:
MATCH (co1:CORPORATION)<-[:is_employee_of]-(p:PERSON)-[:has_personal_account]->(a1:ACCOUNT)-
[:transfer_origin]->(t:TRANSFER)<-[:transfer_destination]-(a2:ACCOUNT)<-[:has_corporate_account]-
(co2:CORPORATION)-[:incorporated_in]->(c:COUNTRY)
WHERE c.IS_TAX_HAVEN = 1
RETURN co1
此查询在MATCH中具有很多关系和节点。 这是编写查询的正确方法,还是我必须拆分此MATCH?
解决方法
关于性能,您可能不需要拆分特定的MATCH
模式。但是,为了获得更好的(人类)可读性,您可能仍希望将其拆分-Cypher解析器通常会以两种方式产生相同的执行计划。
例如,您的查询可以以较短的MATCH
模式开始,该模式更易于理解,并且与WHERE
子句紧密联系:
MATCH (a2:ACCOUNT)<-[:has_corporate_account]-(:CORPORATION)-[:incorporated_in]->(c:COUNTRY)
WHERE c.IS_TAX_HAVEN = 1
MATCH
(a1:ACCOUNT)-[:transfer_origin]->(:TRANSFER)<-[:transfer_destination]-(a2),(co1:CORPORATION)<-[:is_employee_of]-(:PERSON)-[:has_personal_account]->(a1)
RETURN DISTINCT co1
请注意,此查询返回DISTINCT co1
,以确保同一公司的返回不超过一次。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。