[英]ArangoDB Slow Query
我是ArangoDB的新手,無法優化我的查詢,希望得到一些幫助。
我在下面提供的查詢是一個真正的例子,我正在努力,在我的開發數據庫上758.078毫秒 ,但在登台時,有一個更大的數據集,它需要531.511秒 。
我還將提供我在dev和staging中遍歷的每個邊表的大小。 任何幫助都非常感謝。
for doc in document
filter repo._key == "my-key"
for v, e, p in 3 any doc edge1, edge2, edge3
options {uniqueVertices: 'global', bfs: true}
filter DATE_ISO8601(p.vertices[2].date) > DATE_ISO8601("2017-09-04T00:00:01Z")
and DATE_ISO8601(p.vertices[2].date) < DATE_ISO8601("2017-09-15T23:59:59Z")
limit 1
return {
commit: p.vertices[2].hash,
date: p.vertices[2].date,
message: p.vertices[2].message,
author: p.vertices[1].email,
loc: p.vertices[3].stats.additions
}
DEV
分期
由於過濾條件,查詢可能很慢
filter
DATE_ISO8601(p.vertices[2].date) > DATE_ISO8601("2017-09-04T00:00:01Z"
and
DATE_ISO8601(p.vertices[2].date) < DATE_ISO8601("2017-09-15T23:59:59Z")
在遍歷期間不應用,但僅在之后應用。 這可能是由於過濾條件中的函數調用(到DATE_ISO8601
)。 如果您的日期值存儲為數字,您可以檢查以下過濾條件是否加快查詢速度:
filter
p.vertices[2].date > DATE_TIMESTAMP("2017-09-04T00:00:01Z"
and
p.vertices[2].date < DATE_TIMESTAMP("2017-09-15T23:59:59Z")
修改過濾條件應該允許在遍歷內拉過濾條件,因此它會更早執行。
您可以使用db._explain(<query string goes here>);
驗證查詢執行計划db._explain(<query string goes here>);
在ArangoShell中或從Web界面的AQL編輯器中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.