2015-10-17 55 views
0

我正在爲我的應用程序評估ArangoDb。 我有一個像文件系統一樣的數據模型,帶有一個Items文檔集合和一個ItemsParents邊緣集合,其中包含關於Items的父子關係。如何在arangodb圖形搜索中使用索引?

現在我想找到一個特定項目的所有孩子的,具有特定屬性的

實例:用酒店的所有孩子的Properties.Age.Value = 20

,所以我創建了一個散列索引在Items.Properties.Age.Value,設計這個AQL查詢:

FOR item 
    IN GRAPH_NEIGHBORS('ItemsGraph', 'Items/A', 
     { direction : 'outbound', 
     includeData: true, 
     neighborExamples : { 'Properties.Age.Value': 20 } 
     }) 
RETURN { Id: item._key, Name: item.Name } 

上面的查詢工作做好,但沒有索引的使用,所以它物品進行集合的全掃描測試Properties.Age.Value過濾。

如何設計查詢,使其有效使用索引並避免集合掃描?

謝謝

回答

3

目前ArangoDB只能在圖表操作中使用邊緣索引;

不使用GRAPH_NEIGHBOURS可能會提供使用索引,但你必須自己過濾鄰居。

頂點中心索引,這將提供這種索引支持可能會在下一個ArangoDB發佈之一。

同時,這可能與更新的ArangoDB版本。

GRAPH_NEIGHBOURS被合併到the traversal engine中。您現在可以在Age_from上創建組合索引。您應該使用db._explain()檢查指數的使用情況。

+0

它實際上計劃在2016年1月發佈版本3.0。 –