1

私がしなければ、私は、ユーザーにとUUIDDatastax DSE 5.0.xグラフで(または)クエリでindexが使用されないのはなぜですか?

にインデックスを作成しました:

schema.vertexLabel("User").describe() 

私が手:

schema.vertexLabel("User").index("byUuid").materialized().by("uuid").add() 

私が実行しているとき:

g.V().hasLabel("User").has("uuid","oneUuid") 

インデックスが正しくピックアップされます。

しかし、ときに私は次のようにします。

g.V().or(__.hasLabel("User").has("uuid","oneUuid"), __.hasLabel("User").has("uuid","anotherUUID")) 

私が取得しています:

org.apache.tinkerpop.gremlin.driver.exception.ResponseExceptionを: 問合せ句に答えるために、インデックスが見つかりませんでしたgraph.allow_scanは が無効です:

ありがとうございます!一つ以上の条件は、インデックス・ルックアップによって回答することができませんでした

g.V().or(
    hasLabel("User").has("uuid","oneUuid"), 
    hasLabel("User").has("name","bob")) 

...:あなたのような、はるかに複雑なことを行うことができますよう

答えて

3

or()は簡単に最適化可能ではありません。これは実行可能であり、将来のバージョンで実行される可能性がありますが、現時点で利用可能なグラフデータベースのどれもOrStepを最適化しようとしていません。

g.V().hasLabel("User").has("uuid", within("oneUuid", "anotherUUID")) 
+0

ありがとう:それは実際にインデックスを使用するように

とにかく、あなたのサンプルクエリを簡単に書き換えることができます!私は()内を知っていましたが、あなたが送ったものに私の特定の(または)ケースが変換されることを期待していました。 –

関連する問題