gpt4 book ai didi

database - FILTER 语句的顺序是否会影响 arangoDB 中的查询性能?

转载 作者:搜寻专家 更新时间:2023-10-30 22:25:20 25 4
gpt4 key购买 nike

比如我有这个数据结构

{
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 中无关紧要?

最佳答案

是的,FILTER 语句的顺序确实会影响查询的性能。

特别是在你的情况下,

easyFilter 只是字符串比较,

hardFilter是由多个操作构成的

  1. 迭代数组+获取定义键的值
  2. 展平该数组
  3. 检查数组是否包含定义的值

忽略的是索引的重要性。他们是真正执行查询的幕后黑手。检查Handling IndexesArangoDB documentation , 特别是 Which Index to use when .

为了提高示例的性能,添加 Hash 绝对有帮助或 Skiplist index easyFilter(取决于数据的类型/唯一性)。这两个索引也支持数组,但根据文档,这仅适用于包含值的简单数组,而不适用于对象。

关于database - FILTER 语句的顺序是否会影响 arangoDB 中的查询性能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53118053/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com