我是带图的 arangoDB 的新手。我只是想知道对于不需要查询图形的非常简单的 1:1 连接,构建边或使用“DOCUMENT()”是否更快?
LET a = DOCUMENT(@from)
FOR v IN OUTBOUND a
CollectionAHasCollectionB
RETURN MERGE(a,{b:v})
对比
LET a = DOCUMENT(@from)
RETURN MERGE(a,{b:DOCUMENT(a.bId)}
最佳答案
一般来说,后一种变体
LET a = DOCUMENT(@from)
RETURN MERGE(a,{b:DOCUMENT(a.bId)}
应该比全功能的遍历变体具有更低的开销。这是因为 DOCUMENT 变体将对文档进行点查找,而遍历变体是非常通用的:它可以从可变数量的集合中返回零到多个结果,需要跟踪看到的路径等。
当我在本地测试用例中尝试这两种变体时,非遍历变体也快了很多,支持了这个说法。
然而,基于遍历的变体更加灵活:如果存在多个边(没有 1:1 映射)和更长的路径,它也可以使用。
关于graph - Arangodb 性能 : edge vs. 文档(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46069044/