2

Web アプリケーション用に ArangoDB を使用して DB を設計しています。次の AQL クエリを作成しました。

FOR result
 IN Collection
 FILTER result.field != 'undefined'
 RETURN result

フィールドにある種のインデックスを追加しましたが、クエリはまったくインデックスを使用しません。

あなたの意見では、何が問題ですか? == 演算子にはhash indexを使用でき、 <= または同様の演算子にはskip listを使用できることを読みました。

さて、同じことをする正しい方法は何ですか?

4

1 に答える 1

3

(質問に回答済みのマークを付けることができるように、上記の自分のコメントを回答として貼り付けます):

演算子が属性で使用されている場合、!=インデックスは使用されません。

まず第一に、ArangoDB のハッシュ インデックスはこのタイプの操作をサポートしていません。

スキップリスト インデックスの場合、操作は理論的には に変換できるresult.field < 'undefined' OR result.field > 'undefined'ため、理論的にはそのようなインデックスから 2 つの互いに素な範囲をクエリできます。しかし、一般に、インデックスを使用するポイントは、クエリのできるだけ早い段階でできるだけ多くのドキュメントを除外することであり、多くの場合、!=大幅な削減にはつながりません。

于 2015-12-04T15:43:23.487 に答える