graph - Arangodb 性能 : edge vs. 文档()

标签 graph arangodb query-performance aql

我是带图的 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/

相关文章:

c++ - 对二维线对执行操作的最佳方法是什么?

database - 如何使用 VelocyPack (VPack) 在 ArangoDB 中存储图像?

mysql - 具有三个where条件的select查询很慢,但是具有三个where条件中的任意两个条件的相同查询很快

php - 添加where条件时mysql查询不起作用

docker - EOF在Octave上调用ArangoDB查询的替代方法

SQL Server 查询 - 哪个性能更好?

javascript - 使用 d3 的轴标签的多级/分组

graph - Neo4j:合并重复节点

r - 从两个数据框中的数据生成多个序列图/散点图

c++ - 如何从桌面应用程序访问嵌入式 ArangoDB?