0
我已經聽到和讀到了很多相互矛盾的信息對他們,我想澄清,因爲我似乎無法影響我的谷歌查詢來獲得我在尋找的答案:MongoDB指數如何工作?
- 必由之路一個使用索引中的所有字段以正確使用索引?
- 如果查詢中的字段未包含在該索引中,Mongo是否能夠利用索引?
我已經聽到和讀到了很多相互矛盾的信息對他們,我想澄清,因爲我似乎無法影響我的谷歌查詢來獲得我在尋找的答案:MongoDB指數如何工作?
要在Sergio的意見擴大一點點:
必須使用所有字段在索引中要正確地使用索引?
對於compound index,MongoDB可以使用該索引來支持對索引前綴的查詢。
例如,假設有一個索引{ "a" : 1, "b" : 1 }
。查詢db.coll.find({ "a" : "something" })
可以利用此索引,因爲a
是一個前綴,但如果它在b
上進行過濾,查詢將無法使用該索引。
如果查詢中的字段未包含在該索引中,Mongo能夠利用索引嗎?
是的。通常情況下,如果查詢中的所有字段都是索引的,但查詢仍然可以使用僅匹配字段子集的索引。
例如,假設查詢是db.coll.find({ "a" : "foo", "b" : "bar" })
。該查詢可以利用索引{ "a" : 1 }
或{ "b" : 1 }
中的任一個,但是{ "a" : 1, "b" : 1 }
或{ "b" : 1, "a" : 1 }
通常會更有效。
1)否,2)是 –