ArangoDB - 带有“!=”运算符的DB索引

时间:2015-10-29 17:15:40

标签: operators arangodb aql

我正在为Web应用程序设计一个带有ArangoDB的数据库。 我写了以下AQL查询:

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

我为 field 添加了某种类型的索引,但查询不会使用任何索引。

在您看来,问题是什么? 我读到对于==运算符,我们可以使用哈希索引和< =或类似运算符跳过列表

现在,做同样事情的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

(将我自己的评论从上面作为答案粘贴,以便将问题标记为已回答):

如果在属性上使用!=运算符,则不会使用索引。

首先,ArangoDB中的哈希索引不支持这种类型的操作。

对于跳过列表索引,理论上可以将操作转换为result.field < 'undefined' OR result.field > 'undefined',因此理论上可以从这样的索引中查询两个不相交的范围。但一般来说,使用索引的目的是在查询中尽可能早地过滤掉尽可能多的文档,并且在很多情况下!=不会导致大幅减少