当我运行查询时
MATCH paths=(l:Left)-[:CONNECTED_TO*..5]->(r:Right)
WHERE (l.id IN $left_ids) AND (r.id IN $right_ids)
RETURN paths
即,只要左侧位于paths
且右侧位于Left
,请Right
left_ids
与right_ids
相关联。
我应该期待neo4j
Left
和Right
的笛卡尔积,然后过滤结果 - 或另外 - 有没有明显的方式让我自己搜索一下 - 也就是说有一个查询计划器,或者一些我错过的好的文档?
答案 0 :(得分:2)
查看Neo4j文档的Profiling章节:
<强> EXPLAIN 强>
如果要查看执行计划但不运行该语句, 使用EXPLAIN添加Cypher语句。声明将永远 返回一个空结果,不对数据库进行任何更改。
配置文件强>
如果要运行该语句并查看哪些运算符正在执行 大多数工作,使用PROFILE。这将运行您的声明并保持 跟踪每个操作员通过的行数,以及每个操作员的数量 operator需要与存储层进行交互才能检索 必要的数据。请注意,对查询进行概要分析会使用更多 资源,所以除非你积极工作,否则你不应该分析 在查询上。
因此,您可以使用PROFILE
或EXPLAIN
添加查询,并查看Neo4j生成的execution plan。这样:
PROFILE MATCH paths=(l:Left)-[:CONNECTED_TO*..5]->(r:Right)
WHERE (l.id IN $left_ids) AND (r.id IN $right_ids)
RETURN paths