2010-07-07 42 views
4

我的測試數據庫中有大約2500個文檔,搜索xpath /path/to/@attribute需要大約2.4秒。做distinct-values(/path/to/@attribute)需要3.0秒。在X-Hive/Documentum xDB中,什麼索引會加速我的XQuery?

我已經能夠通過在/path/to[@attribute<STRING>]上添加路徑值索引來加速/path/to[@attribute='value']上的查詢數百或數十毫秒,但沒有索引我能想到獲取更普遍的查詢的索引。

有人知道我應該使用什麼索引?

+0

看起來很奇怪這個問題沒有答案。 – 2012-03-06 22:55:09

+0

'distinct-values'通常不是非常優化的,因此您需要某種方式直接訪問該索引中的值,這是特定於實現的。你在使用什麼XQuery處理器? – wst 2013-11-05 16:39:51

回答

1

您提出的索引是正確的(/ path/to [@attribute]),但不幸的是,xDB優化器目前無法識別這個特定情況,因爲存儲在索引中的'目標節點'始終是一個元素而不是屬性。如果/ path/to/@屬性的結果很少,那麼你可以通過稍微修改你的查詢來優化這個:distinct-values(/ path/to [@attribute]/@ attribute)。通過這個查詢,優化器認識到有一個索引可以用來訪問'to'元素,但是它仍然可以訪問目標文檔來檢索@attribute步驟的屬性。這正是爲什麼它只會在點擊率很低的情況下受益:每個點擊可能會訪問不同的數據頁面。

您還可以通過API直接訪問索引中的鍵:XhiveIndexIf.getKeys()。這將會非常快,但顯然這不是非常用戶友好的(並且應該由優化器來完成)。

很明顯,優化器可以處理這個問題。我會將它添加到錯誤跟蹤器中。

相關問題