0

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

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

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

所以我在 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 } 

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

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

谢谢

4

1 回答 1

3

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

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

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

[编辑] 同时,这在较新的 ArangoDB 版本中是可能的。

GRAPH_NEIGHBOURS被集成到遍历引擎中。您现在将在Age和上创建一个组合索引_from。您应该使用db._explain()来检查索引的使用情况。

于 2015-10-20T11:16:23.277 回答