我在Cypher中有三个类似的查询产生不同的结果。
Q1 - 平均返回结果约为110毫秒
MATCH (a:person {pid:'48'})-[:FRIEND*2..2]->(fof)
WHERE NOT (a)-[:FRIEND]->(fof)
RETURN fof.pid
Q2 - 平均返回结果约70毫秒
MATCH (a:person {pid:'48'})-[:FRIEND]->(f)
WITH a, COLLECT(f) as friends
MATCH (a)-[:FRIEND]->(:person)-[:FRIEND]->(fof)
WHERE NOT (fof IN friends)
RETURN fof.pid
问题3 - 在相同的时间内没有返回结果
MATCH (a:person {pid:'48'})-[:FRIEND]->(:person)-[:FRIEND]->(fof:person)
WHERE NOT (a)-[:FRIEND]->(fof) RETURN fof.pid
这里有什么区别?
编辑:
版本 - Neo4j 2.2.0-M03,嵌入式数据库