2014-02-21 38 views
5

因此,我不完全理解索引交叉點和使用複合索引之間的某些區別。指數交叉點與複合指數?

mongodb是否有可能爲每個查詢使用多個索引交集?複合指標和指數交叉點之間的性能差異是什麼?

+1

本文可能有幫助:http://blog.mongohq.com/at-the-mongodb-2-6-index-intersection/ – bertie

+0

而這 - http://blog.mongodb.org/post/87790974798/ mongodb-26 – avalanche1

回答

0

the doc

MongoDB中只能使用一個索引,以支持任何給定的操作。但是,$或查詢的每個子句可能使用不同的索引。

因此,在Mongo中沒有「指標交集」的概念。鼓勵您使用複合索引,這些索引爲查詢中的所有字段提供索引訪問,理想情況下按照每個連續字段儘可能減少搜索空間的順序。

+0

最近增加了:https://jira.mongodb.org/browse/SERVER-3071和http://blog.mongodb.org/post/51574091391/mongodbs-new-matcher – paulkon

+0

哦,我的。這是個大新聞!不能等待它降落在穩定! –

5

mongodb是否可以爲每個查詢使用多個索引交集?

索引交集是MongoDB 2.5.5開發版本中引入的新特性,將包含在MongoDB 2.6生產版本中。

索引交集涉及使用多個索引來滿足查詢;複合指標是多個領域的指標。索引交叉可以使用複合索引的整個索引或索引前綴。一般來說,與MongoDB 2.5.5相同,每個索引交叉點包含兩個索引;但是,MongoDB可以使用多個/嵌套索引交集來解析查詢。

複合指標和指數交點的性能差異是什麼?

這將根據您的使用情況而有所不同。如果沒有合適的複合索引來覆蓋所有的常見查詢,索引交叉提供了靈活性,但複合索引可能更具選擇性,並且能夠找到檢查更少索引條目的結果。相反,如果您能夠利用指數交叉點替換多個複合指標,則可能會降低索引維護的開銷。

您最好的方法是在您的開發/分期環境中對此進行測試。

手冊中有一個Index Intersection頁面,其中詳細介紹瞭如何工作。