假设我有一个超节点,它有很多边,我想快速返回给定节点的前N条边。如何使用ArangoDB顶点中心索引https://docs.arangodb.com/3.11/index-and-search/indexing/working-with-indexes/vertex-centric-indexes/?
我可以创建跳过列表顶点中心索引
arangosh> db.collection.ensureIndex({ type: "skiplist", fields: [ "_from", "points" ] })
但是优化器不使用排序查询来拾取它
FOR edge IN collection
FILTER edge._from == "vertices/123456"
SORT edge.points DESC
LIMIT 0, 10
RETURN edge
arango优化器似乎也没有在遍历语法中选择跳跃列表顶点中心索引,但文档说它应该:
FOR v, e, p IN 3..5 OUTBOUND @start GRAPH @graphName
FILTER p.edges[*].points ALL >0
RETURN v
1条答案
按热度按时间zd287kbt1#
快速返回给定节点的前N条边
最好从节点开始:
这应该是你在ArangoDB的当前版本(3.3)中所能得到的最好的结果,假设你让ArangoDB索引
_from
--我怀疑为.points添加一个跳过列表会产生任何(有益的)差异,除非你在一个FILTER中使用它。(我认为使用skiplist的indexing _from在这里是不明智的。如果
edges
是一个Edges集合,那么它已经被正确索引了。