在neo4j中使用apoc.algo.dijkstra时如何创建关系指数

bkkx9g8r  于 2023-02-04  发布在  Go
关注(0)|答案(1)|浏览(164)

我想在关系上创建适当的索引,以便在使用apoc.algo.dijkstra算法时提高性能。
我的查询如下所示MATCH (a:Waypoint {name: 'nameTwo'}), (b:Waypoint{name: 'nameOne'}) CALL apoc.algo.dijkstra(a, b, 'STREET_A>|STREET_B>', 'distance') yield path as path, weight as distance RETURN path, distance;
我需要关系类型'STREET_A'和'STREET_B'的索引我尝试创建如下索引,但似乎没有性能差异:CREATE INDEX STREET_A_INDEX IF NOT EXISTS FOR ()-[r:STREET_A]-() ON (r.distance)
这是使用PROFILE的结果:Plan image
有没有可能通过索引来提高apoc.algo.dijkstra的性能?

g2ieeal7

g2ieeal71#

我不认为关系索引在这种情况下会有帮助。索引在Neo4j中用于查找遍历的起点-在您的情况下,将查找两个Waypoint节点。从查询计划来看,您似乎已经有了一个用于查找这些节点的索引。
Neo4j有所谓的“无索引邻接”,这意味着从一个节点到另一个节点的遍历不使用索引,而操作更像是跟随指针--所以在你的例子中不会使用关系索引。

相关问题