【发布时间】:2017-12-18 08:47:20
【问题描述】:
假设我有很多边的超级节点,并且想快速返回给定节点的前 N 条边。如何使用 arangodb Vertex Centric Index https://docs.arangodb.com/3.1/Manual/Indexing/VertexCentric.html 做到这一点?
我可以创建skiplist Vertex Centric Index
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 优化器不会在遍历语法中选择 skiplist Vertex Centric Index 但是文档说它应该:
FOR v, e, p IN 3..5 OUTBOUND @start GRAPH @graphName
FILTER p.edges[*].points ALL >0
RETURN v
【问题讨论】:
-
如果将遍历深度更改为
1..5或1..1,它是否拾取索引? -
不。它没有
-
请在 GitHub 上报告:github.com/arangodb/arangodb/issues/new。包括软件版本,如果可能的话,包括数据集。使用具有特定值分布的完全相同的数据可能很重要,因为基于选择性估计,顶点中心索引并不总是优于默认边缘索引。