很明显,在两个顶点之间找到一条边的直接方法是:
graph.traversal().V(outVertex).bothE(edgeLabel).filter(__.otherV().is(inVertex))
我觉得这filter
一步必须遍历所有边缘,这对于一些边缘很多的应用程序来说真的很慢。
另一种方法可能是:
traversal = graph.traversal()
.V(outVertex)
.bothE(edgeLabel)
.as("x")
.otherV()
.is(outVertex) // uses index?
.select("x");
我假设第二种方法可能会快得多,因为它将使用 ID 索引,这将使其比第一种方法更快。
哪一个更快、更高效(就 IO 而言)?
我正在使用 Titan,所以你也可以让你的答案 Titan 具体。
编辑
就时间而言,似乎第一种方法更快(顶点的边缘为 20kb
gremlin> clock(100000){g.V(b).bothE().filter(otherV().is(a))}
==>0.0016451789999999999
gremlin> clock(100000){g.V(b).bothE().as("x").otherV().is(a).select("x")}
==>0.0018231140399999999
IO怎么样?