【问题标题】:how to use indexes in arangodb graph search?如何在 arangodb 图搜索中使用索引?
【发布时间】:2017-09-10 12:34:32
【问题描述】:

我正在为我的应用程序评估 ArangoDb。 我有一个像文件系统这样的数据模型,有一个 Items 文档集合和一个 ItemsParents 边缘集合,其中包含关于 Items 的父子关系。

现在我想查找具有特定属性的特定项目的所有子项

例如:属性 Properties.Age.Value = 20 的 A 的所有子节点

所以我在 Items.Properties.Age.Value 上创建了一个哈希索引,并设计了这个 AQL 查询:

FOR item 
    IN GRAPH_NEIGHBORS('ItemsGraph', 'Items/A', 
       { direction : 'outbound', 
         includeData: true,
         neighborExamples : { 'Properties.Age.Value': 20 }
       })
RETURN { Id: item._key, Name: item.Name } 

上述查询运行良好,但没有使用索引,因此它对 Items 集合执行完整扫描以测试 Properties.Age.Value 过滤器。

如何设计查询以使其使用索引高效执行并避免集合扫描?

谢谢

【问题讨论】:

    标签: graph-databases arangodb aql document-database nosql


    【解决方案1】:

    目前 ArangoDB 只能在图形操作中使用边索引;

    不使用 GRAPH_NEIGHBOURS 可能会提供使用索引,但您必须自己过滤邻居。

    提供这种索引支持的以顶点为中心的索引可能会出现在接下来的两个 ArangoDB 版本之一中。

    [编辑] 同时,较新的 ArangoDB 版本也可以做到这一点。

    GRAPH_NEIGHBOURS 已集成到 the traversal engine。您现在将在Age_from 上创建一个组合索引。您应该使用db._explain() 来检查索引的使用情况。

    【讨论】:

    • 实际上计划在 2016 年 1 月发布 3.0 版。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-28
    • 2012-12-04
    相关资源
    最近更新 更多