ArangoDB 用于排序的顶点中心索引

9rygscc1  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(185)

假设我有一个超节点,它有很多边,我想快速返回给定节点的前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
zd287kbt

zd287kbt1#

快速返回给定节点的前N条边
最好从节点开始:

FOR v, e IN 1..1 ANY @start @edges
  SORT e.points DESC
  LIMIT 10
  RETURN e

这应该是你在ArangoDB的当前版本(3.3)中所能得到的最好的结果,假设你让ArangoDB索引_from--我怀疑为.points添加一个跳过列表会产生任何(有益的)差异,除非你在一个FILTER中使用它。
(我认为使用skiplist的indexing _from在这里是不明智的。如果edges是一个Edges集合,那么它已经被正确索引了。

相关问题