如何使用索引在排序数据库图搜索



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

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

示例:属性为Properties.Age.Value = 20的所有子元素

所以我在Items.Properties.Age上创建了一个哈希索引。值,并设计此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集合测试属性。年龄。值过滤器。

如何设计查询,使其性能有效地使用索引和避免集合扫描?

谢谢

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

不使用 graph_neighbors 可以提供使用索引,但这样您就必须自己过滤邻居。

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

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

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

最新更新