我了解到你的LIMIT会高出多少,执行计划期间DbHits会有多高,而neo4j正在使用A *算法进行“allShortestPaths”查询。
我的第一个问题是剂量LIMIT也会影响neo4j“allShortestPaths”查询。如果它确实影响了,它会影响多少,为什么会影响?
我已经做了一些测试。但我没有找到明显的证据表明LIMIT会影响我们所期望的性能
[EDITED]
我的测试查询:
MATCH
(node1:E { eid:"c953fc2d-55fc-4239-910e-ae6e41b3648d" }),
(node2:E { eid:"e8cdf5e0-97ad-4e1e-a8e4-29358f8a9866" }),
p = allShortestPaths((node1)-[*]-(node2))
RETURN p
LIMIT 25;
答案 0 :(得分:2)
测试查询中的LIMIT
不会限制allShortestPaths
完成的工作量;相反,它只会限制你得到的结果数量。
影响allShortestPaths
完成的工作量的唯一方法是在搜索路径的长度上加上一个上限。例如,此查询仅搜索最多包含5个关系的路径:
MATCH
(node1:E { eid:"c953fc2d-55fc-4239-910e-ae6e41b3648d" }),
(node2:E { eid:"e8cdf5e0-97ad-4e1e-a8e4-29358f8a9866" }),
p = allShortestPaths((node1)-[*..5]-(node2))
RETURN p
LIMIT 25;
顺便说一句,为了加快终端节点的匹配,您应该:E(eid)
上create an index。