2013-03-02 99 views
2

我讀過MongoDB中操作手冊中的索引一章,並想知道是否有人可以擴展關於索引的內容。MongoDB在多個字段上的索引

如果我有一個包含a,b,c,d,e的索引,並且我在a,b,c上查詢,則使用該索引。如果我在a,c,e上查詢,會發生什麼情況?索引僅用於a上的查詢,還是在查詢其他字段時使用了索引?

在這種情況下,在a,c,e上也有更具意義的索引。我問,因爲我有一個前端部分鏈接到這些字段,用戶可以創建一個自由格式查詢(a,b,c,f可能是一個)。我是否需要一個可以通過的所有可能選項的索引?

回答

3

MongoDB中的複合索引通過前綴方法工作。

所以對於a,b,c,d,eaa,b將被視爲前綴(http://docs.mongodb.org/manual/core/indexes/#id5)在兩個a,b,ca,c,e索引,因爲這樣的查詢應該產生一個索引的使用;至於a,c,e是否表現完全是另一個問題。

我問,因爲我有一個前端部分鏈接到這些字段,用戶可以創建一個自由格式查詢(a,b,c,f可以是一個)。我是否需要一個可以通過的所有可能選項的索引?

嗯,如果a總是定義,那麼可能不是(一explain當然會更好這裏對您的數據集)第一場,否則,你可能需要一些組合,是的。

+0

啊,我忘記了解釋。在添加'a,b,c,d,e'索引後,我會做一些測試,看看它是如何影響事物的。 – 2013-03-02 18:55:57