簡體   English   中英

ArangoDB慢速查詢

[英]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

  • edge1:2,638
  • edge2:2,560
  • edge3:386

分期

  • edge1:5,438,811
  • edge2:5,544,028
  • edge3:423,545

由於過濾條件,查詢可能很慢

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編輯器中。

可能有點晚了,但它會幫助別人。 使用DATE函數會使查詢更慢,因此如果可能,請刪除DATE函數。 例如,在此處輸入圖像描述 在此輸入圖像描述

您可以看到查詢過濾器命令使用~7s的Date函數。 如果不使用日期函數,它將比~0.5秒運行得更快。 這兩行將查詢2018-09-29的數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM