Performance 为什么这个简单的ArangoDB查询有时需要很长时间
我正在通过Performance 为什么这个简单的ArangoDB查询有时需要很长时间,performance,arangodb,Performance,Arangodb,我正在通过arangojs.query()通过这个非常简单的查询查询大约500k个文档的ArangoDb "FOR c IN Entity FILTER c.id == 261764 RETURN c" 它是节点链接图中的一个节点 但有时,这需要10秒以上,arangodb的日志中也有关于查询时间过长的警告。如果在浏览器上使用新会话,则会发生很多时间。是arangodb或arangojs的问题还是我的查询本身没有优化 -------------------编辑-----------------
arangojs.query()
通过这个非常简单的查询查询大约500k个文档的ArangoDb
"FOR c IN Entity FILTER c.id == 261764 RETURN c"
它是节点链接图中的一个节点
但有时,这需要10秒以上,arangodb的日志中也有关于查询时间过长的警告。如果在浏览器上使用新会话,则会发生很多时间。是arangodb或arangojs的问题还是我的查询本身没有优化
-------------------编辑----------------------
添加了db.explain
Query string:
FOR c IN Entity FILTER c.id == 211764 RETURN c
Execution plan:
Id NodeType Est. Comment
1 SingletonNode 1 * ROOT
2 EnumerateCollectionNode 140270 - FOR c IN Entity /* full collection scan */
3 CalculationNode 140270 - LET #1 = (c.`id` == 211764) /* simple expression */ /* collections used: c : Entity */
4 FilterNode 140270 - FILTER #1
5 ReturnNode 140270 - RETURN c
使用的索引:
none
应用的优化规则:
none
正如您的解释所示,您的查询不使用索引,而是进行完整的集合扫描 根据查找匹配项的时间(在集合开始或结束时),执行时间可能会有所不同
请参阅创建索引以及如何分析
db的输出一章。_explain()
能否添加db的输出。_explain()
?如果您在c.id
上搜索,是否有索引?通常ArangoDB使用一个id字段_id,它会自动为它创建一个索引。@dothebart:我添加了解释。但如果在数据库内部使用,它的速度非常快,而且我从未看到它超过0.5秒