例如,我有此数据结构
{
easyFilter:1111,
hardFilter:[
{id:1},
{id:2},
...
]
}
如果我使用的查询是
For u in collection
Filter u.easyFilter=1111 AND "somevalue" IN FLATTEN(u.hardFilter[*].id)
return u
如果我首先放置easyFilter
,因为它只是在对象的第一级上进行字符串比较,或者在arango中没有关系,查询是否会运行得更快?
答案 0 :(得分:2)
是的,FILTER语句的顺序确实会影响查询的性能。
特别是在您的情况下
easyFilter
只是字符串比较,
hardFilter
由多个操作构造
省略的是索引的重要性。他们是真正的性能查询背后的人。在Handling Indexes中检查ArangoDB documentation,尤其是Which Index to use when。
对于提高示例性能而言,添加Hash或Skiplist索引easyFilter(取决于数据的类型/唯一性)绝对有帮助。这两个索引也都支持数组,但是基于文档,它们仅适用于包含值的简单数组,而不适用于对象。