【发布时间】:2016-03-11 17:43:30
【问题描述】:
不太复杂:我想计算每个文档的边缘并将数字保存在文档中。我想出了两个有效的查询;不幸的是,由于我有数百万条边,两者都很慢。有没有更快的方法来更新具有存储边数的属性的文档? (只是一个时间点的计数)
功能正常但速度慢的 AQL 查询:
FOR doc IN Documents
LET inEdgesCount = LENGTH(GRAPH_NEIGHBORS('edgeGraph', doc,{direction: 'inbound', maxDepth:1})
LET outEdgesCount = LENGTH(GRAPH_NEIGHBORS('edgeGraph', doc,{direction: 'outbound', maxDepth:1})
UPDATE doc WITH {inEdgesCount: inEdgesCount, outEdgesCount: outEdgesCount} In Documents
或:
FOR e IN Edges
COLLECT docId = e._to WITH COUNT INTO counter
UPDATE SPLIT(docId,'/')[1] WITH {inEdgeCount: counter}
(然后对出站边缘重复)
顺便说一句,有没有办法查看查询速度(例如每秒 FOR 执行次数)或完成百分比?我一直在尝试通过使用 LIMITed 查询来判断速度,但所需的时间似乎并没有呈线性增长。
【问题讨论】:
-
我最终通过释放一些空间并将数据库移至我的 SSD 来“解决”这个问题。