neo4j是先匹配后过滤还是先过滤后匹配
当我运行查询时neo4j是先匹配后过滤还是先过滤后匹配,neo4j,cypher,Neo4j,Cypher,当我运行查询时 MATCH paths=(l:Left)-[:CONNECTED_TO*..5]->(r:Right) WHERE (l.id IN $left_ids) AND (r.id IN $right_ids) RETURN paths 也就是说,只要左在左ID中,右在右ID中,就给我所有左连接到右的路径 我应该期待neo4j吗 执行左和右的笛卡尔乘积,然后过滤结果-或 它是否只在确定允许哪些节点后才搜索路径 还有-有没有什么明显的方法让我自己去搜索-比如有没有一个查询计划,或
MATCH paths=(l:Left)-[:CONNECTED_TO*..5]->(r:Right)
WHERE (l.id IN $left_ids) AND (r.id IN $right_ids)
RETURN paths
也就是说,只要左在左ID
中,右在右ID
中,就给我所有左连接到右的路径
我应该期待neo4j吗
执行左
和右
的笛卡尔乘积,然后过滤结果-或
它是否只在确定允许哪些节点后才搜索路径
还有-有没有什么明显的方法让我自己去搜索-比如有没有一个查询计划,或者一些我错过的好的详细文档 看看Neo4j文档的一章:
解释
如果要查看执行计划但不运行语句,
在你的密码声明前加上解释。这句话永远不会改变
返回一个空结果,不更改数据库
个人资料
如果要运行该语句并查看哪些运算符正在执行
大部分的工作,使用个人资料。这将运行您的声明并保持
跟踪通过每个运算符的行数,以及每个运算符的行数
操作员需要与存储层交互以检索
必要的数据。请注意,分析您的查询会使用更多
资源,所以除非您正在积极工作,否则您不应该配置文件
在查询中
因此,您可以使用PROFILE
或EXPLAIN
预先结束查询,并查看Neo4j生成的。这样:
PROFILE MATCH paths=(l:Left)-[:CONNECTED_TO*..5]->(r:Right)
WHERE (l.id IN $left_ids) AND (r.id IN $right_ids)
RETURN paths
嗨@danodonovan,不客气。这解决了你的问题?如果是这样,请考虑接受它作为正确的答案。否则,请告诉我。那我可以再帮你一次。