首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArangoDB慢查询

ArangoDB慢查询
EN

Stack Overflow用户
提问于 2017-10-23 20:52:47
回答 2查看 664关注 0票数 3

我是ArangoDB新手,很难优化我的查询,我希望能得到一些帮助。

下面提供的查询是一个实际的示例,在我的dev数据库中使用758.078 ms,但是在使用更大的数据集的情况下,它需要531.511 s

我还将提供在dev和暂存中遍历的每个边缘表的大小。任何帮助都是非常感谢的。

代码语言:javascript
复制
for doc in document
filter repo._key == "my-key"
    for v, e, p in 3 any doc edge1, edge2, edge3
    options {uniqueVertices: 'global', bfs: true}
    filter DATE_ISO8601(p.vertices[2].date) > DATE_ISO8601("2017-09-04T00:00:01Z")
        and DATE_ISO8601(p.vertices[2].date) < DATE_ISO8601("2017-09-15T23:59:59Z")
    limit 1
    return {
        commit: p.vertices[2].hash,
        date: p.vertices[2].date,
        message: p.vertices[2].message,
        author: p.vertices[1].email,
        loc: p.vertices[3].stats.additions
    }

DEV

  • edge1: 2 638
  • edge2: 2,560
  • edge3: 386

分期

  • edge1: 5 438 811
  • edge2: 5,544,028
  • edge3: 423,545
EN

回答 2

Stack Overflow用户

发布于 2017-10-24 11:20:06

查询可能比较慢,因为筛选条件

代码语言:javascript
复制
filter 
  DATE_ISO8601(p.vertices[2].date) > DATE_ISO8601("2017-09-04T00:00:01Z"
and 
  DATE_ISO8601(p.vertices[2].date) < DATE_ISO8601("2017-09-15T23:59:59Z")

不是在遍历过程中应用,而是仅在之后应用。这可能是由于筛选条件中的函数调用(对DATE_ISO8601)造成的。如果日期值以数字形式存储,能否检查下列筛选条件是否加快了查询速度:

代码语言:javascript
复制
filter 
  p.vertices[2].date > DATE_TIMESTAMP("2017-09-04T00:00:01Z"
and 
  p.vertices[2].date < DATE_TIMESTAMP("2017-09-15T23:59:59Z")

修改后的筛选条件应允许在遍历中提取筛选条件,因此将更早地执行。

您可以在db._explain(<query string goes here>);或web接口的AQL编辑器中使用ArangoShell验证查询执行计划。

票数 2
EN

Stack Overflow用户

发布于 2018-10-18 11:17:28

可能有点晚了,但这会对某人有帮助的。使用DATE函数会使查询速度慢得多,因此,如果可能的话,删除DATE函数。例如,在这里输入图像描述

您可以看到,查询筛选器命令使用的日期函数是~7。如果不使用date函数,它的运行速度将超过0.5s。这两行将查询2018-09-29年的数据。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46898330

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档