首页 文章

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

提问于
浏览
2

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

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

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

在您看来,问题是什么?我读到对于==运算符,我们可以使用 hash index 和<=或类似的运算符 skip list .

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

1 回答

  • 3

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

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

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

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

相关问题