2016-05-16 4 views
0

OrientDB 2.2でgremlinを使用してカウント(ページネーション用)を見つけようとしています。クラスに多数の頂点(100万)がある場合、このクエリはちょうど死にます(startsWith ' smi 'フィルタは約6000)。私はすでにlast_nameフィールドに作成されたフルテキスト(sbtree)を持っています。OrientDB:Gremlin Countクエリが非常に遅い

どのようにすればよいでしょうか。カウントが合理的な時間に戻ってきます。私はソートをまだ追加していません。なぜなら、それは私にアウトメモリを与えるからです。

答えて

2

ラムダでネイティブのGroovy .filter()メソッドではなく、Gremlin .has()ステップを使用するものには、より多くの不運があるかもしれません。以下がより速くなることができます:あなたはhttps://github.com/mpollmeier/orientdb-gremlinを使用している場合

g.getVerticesOfClass('person')._().has('last_name').startsWith('smi').count() 

、私は、クエリオプティマイザがまだstartsWith()述語を持つクエリに対してインデックスを使用することができないと思います。

+0

ありがとうございますが、私はスクリプトに誤りがあると思います。あなたが正しいと私は注意を払っていない、申し訳ありません:) –

+0

パイプが戻り、startsWithはすぐに動作していません。あなたの最善の賭けはここで問題を開くことです:https://github.com/mpollmeier/orientdb-gremlin最初のクエリを編集し、 'last_name'プロパティを持つ要素を最初にフィルタすることもできます。 'g.getVerticesOfClass( 'person')._()。has(" last_name ")。filter {it.getProperty(" last_name ")} startsWith(" smi ")}。count()'。グレムリンのステップを増やしていくほど、オプティマイザが多く登場します。ネイティブ・グルービの関数ではできません。 – jbmusso

関連する問題