6

Titan と Cassandra v 0.3.1 を使用して、 Titan docscreateKeyIndexで説明されているように頂点キー インデックスを作成しました。

gremlin> g.createKeyIndex("my_key", Vertex.class)
==>null

現在、グラフには約 50k ノードと 186k エッジがあり、my_key. このクエリの実行には約 5 秒かかります。

gremlin> g.V.has("my_key", "abc")
==>v[12345]

一方、インデックス ID の使用には 1 秒もかかりません。

gremlin> g.v(12345)
==>v[12345]

my_key一意の制約はありませんが (したくありません)、何がパフォーマンスにこのような不一致を引き起こしているのか疑問に思っています。一意でないインデックス付き頂点キーのルックアップのパフォーマンスを向上させるにはどうすればよいですか?

4

1 に答える 1

5

ここでの問題.hasは、フィルター関数であり、インデックスを使用しない の使用です。GremlinDocsから:

の構文がhasに似ていることに注意してくださいg.V("name", "marko")。これは、キー インデックス ルックアップであるという違いがあり、実行速度が速くなります。対照的に、この行 はg.V.has("name", "marko")、一致する各頂点の名前プロパティをチェックするすべての頂点を反復し、キー インデックス アプローチよりも大幅に遅くなります。

上記の例では、インデックスを使用して検索を非常に高速に実行します (< 1 秒)。

gremlin> g.V("my_key", "abc")
==>v[12345]
于 2013-06-17T12:56:00.507 に答える