我的查询执行时间太长:
MATCH (s:Person{id:"103"}), s-[rel]-a WITH rel, s
MATCH c1-[:friend]->s<-[:friend]-c2, c1-[fol:follows]->c2
RETURN DISTINCT c1,c2;
然而,当我把它分成两部分时:
MATCH (s:Person{id:"103"}), s-[rel]-a
RETURN rel, s;
和
MATCH (s:Person{id:"103"}),
c1-[:friend]->s<-[:friend]-c2, c1-[fol:follows]->c2
RETURN DISTINCT c1,c2;
它们要快得多。
为什么将rel和s传递给下一个查询会使它变得如此慢?
(我问,因为示例查询只是较大的一部分,我将rel和s传递给WITH而不是RETURN到查询的下一部分)
谢谢
答案 0 :(得分:2)
第一个MATCH中找到的每个节点和关系的第一个循环:
MATCH (s:Person{id:"103"}), s-[rel]-a WITH rel, s
涉及该节点的每个关系的一行。我会使用第三个查询,因为从不使用rel。
答案 1 :(得分:0)
也许你试着&#34;个人资料&#34;在Neo4J控制台中的查询,它将为您提供查询如何在服务器中实际执行的一些线索。 顺便问一下,为什么你需要通过&#34; rel&#34;因为它从未使用过