我有以下Neo4j Cypher查询。 它打算做的是,它检查节点没有传入边缘的情况,并删除传出边缘。这将循环执行,直到返回计数为0。 对于较小的数据集,此查询可以正常工作,但是会花费大量时间,并且在运行较大的数据集时会挂起。
在优化此查询方面,我将不胜感激。
match (n1)-[e1]->(n2)-[:infer_using_std_err]->(n3) where not (n1)-[:infer_using_std_err]->(n2)
match (n4)-[:infer_using_std_err]->(n5)
with collect(distinct(n5)) as node_lst1, collect(distinct(n2)) as node_lst2
with filter(k IN node_lst2 WHERE NOT k IN node_lst1) as res_node_lst unwind res_node_lst as r1
match(r1)-[e:infer_using_std_err]->(r2)
delete(e)
return count(e)