【发布时间】:2015-08-19 15:51:32
【问题描述】:
在 Neo4j 中执行单个匹配查询请求与执行多个匹配查询请求哪个更好? (注意:这里只读取(MATCH/OPTIONAL MATCH)密码,不关心写操作密码)。
在我的情况下,使用单个匹配查询请求会使密码以许多 WITH 语句结束,并且密码看起来很大,我担心密码的可读性。
另一方面,通过使用多个匹配查询请求,我担心性能,因为会有多个数据库命中。
所以任何人都可以给我一个想法?如果我应该在性能之后,我应该使用单一查询请求方法吗?
仅供参考,我使用的是 Neo4j v2.2。
更新:
单个匹配查询的示例:
MATCH (a:A {id: {id} }), (b:B {id: {id2} })
WITH a, b
MATCH (b)-[:R1]->(x:X)
OPTIONAL MATCH (y:Y)-[:R2]->(x)
WITH a, b, COUNT(y) as c
OPTIONAL MATCH (a)-[r3:R3]->(b)
WITH a, b, c, COUNT(r3) > 0 AS d;
... // another MATCH/OPTIONAL MATCH & WITH statements
RETURN a, b, c, d, ...;
如果使用多个查询请求:
// Query 1
MATCH (a:A {id: {id} }), (b:B {id: {id2} })
RETURN a, b;
// Query 2
MATCH (b:B {id: {id}})-[:R1]->(x:X)
OPTIONAL MATCH (y:Y)-[:R2]->(x)
RETURN COUNT(y);
// Query 3
MATCH (a:A {id: {id}})-[r3:R3]->(b:B {id: {id2}})
RETURN COUNT(r3) > 0;
【问题讨论】: