したがって、明らかに、2 つの頂点間のエッジを見つける簡単な方法は次のとおりです。
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インデックスを使用するため、2番目のアプローチははるかに高速になると思います。
(IO に関して) どちらがより高速で効率的ですか?
私は Titan を使用しているので、答えを Titan 固有のものにすることもできます。
編集
時間的には、最初のアプローチの方が速いようです (頂点のエッジは 20k でした)b
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
イオはどうですか?