在可变长度路径(VLP)表达式中将限制性更强的节点放在左侧 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

在可变长度路径(VLP)表达式中将限制性更强的节点放在左侧

在可变长度路径(VLP)查询中,查询引擎通过选择在表达式的左侧或右侧开始遍历来优化评估。该决定基于左侧和右侧模式的基数。基数是与指定模式匹配的节点数。

  • 如果右侧模式的基数为 1,则右侧将是起点。

  • 如果左侧和右侧的基数均为 1,则检查两边的扩展并从较小的扩展侧开始。扩展是 VLP 表达式中左侧节点和右侧节点的传出或传入边缘的数量。仅当 VLP 关系为单向关系且提供了关系类型时,才使用优化的这一部分。

  • 否则,左侧将是起点。

对于 VLP 表达式链,此优化只能应用于第一个表达式。其他 VLP 从左侧开始评估。例如,假设 (a) 和 (b) 的基数为 1,(c) 的基数大于 1。

  • (a)-[*1..]->(c):评价从 (a) 开始。

  • (c)-[*1..]->(a):评价从 (a) 开始。

  • (a)-[*1..]-(c):评价从 (a) 开始。

  • (c)-[*1..]-(a):评价从 (a) 开始。

现在让 (a) 的传入边缘数为 2,(a) 的传出边缘数为 3,(b) 的传入边缘数为 4,(b) 的传出边缘数为 5。

  • (a)-[*1..]->(b):评估从 (a) 开始,因为 (a) 的传出边缘数小于 (b) 的传入边缘数。

  • (a)<-[*1..]-(b):评估从 (a) 开始,因为 (a) 的传入边缘数小于 (b) 的传出边缘数。

通常,将限制性更强的模式放在 VLP 表达式的左侧。