簡體   English   中英

FILTER語句的順序是否會影響arangoDB中的查詢性能?

[英]Does the order of FILTER statement affect the performance of query in arangoDB?

例如,我有這個數據結構

{
easyFilter:1111,
hardFilter:[
 {id:1},
 {id:2},
...
]
}

如果我使用的查詢像

For u in collection
Filter u.easyFilter=1111 AND "somevalue" IN FLATTEN(u.hardFilter[*].id)
return u

如果我將easyFilter放在第一位,因為它只是在對象的第一級上進行字符串比較,那么查詢運行速度會更快嗎?

是的,FILTER語句的順序確實會影響查詢的性能。

特別是在您的情況下

easyFilter只是字符串比較,

hardFilter是由多個操作構成的

  1. 迭代數組+獲取已定義鍵的值
  2. 展平該數組
  3. 檢查數組是否包含定義的值

省略了索引的重要性。 他們是真正的性能查詢背后的人。 檢查ArangoDB文檔中的 處理索引 ,特別是何時使用哪個索引

為了提高示例的性能,添加哈希Skiplist索引easyFilter絕對有幫助(取決於數據的類型/唯一性)。 這兩個索引也都支持數組,但是基於文檔,這僅適用於包含值的簡單數組,而不適用於對象。

暫無
暫無

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

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