Na pořadí polí v indexu záleží; nejlepší složený index pro váš příklad hledání a řazení by ve skutečnosti byl:
db.test.ensure_index([("xxx",1),("_id",-1)])
Vzhledem k tomu, že vaše kritéria vyhledávání jsou v poli 'xxx', umístěním tohoto pole na první místo v indexu najdete více výsledků než vyhledávání podle _id
a poté filtrování na dokumenty odpovídající vašemu xxx
kritéria.
Pokud se podíváte na n
číslo pro každý plán zvažovaný optimalizátorem dotazů v allPlans
, BtreeCursor xxx_1
index ve skutečnosti vrací nejvíce výsledků (34). Ostatní indexy vracejí výsledky 9, 10 a 16, takže by byly méně efektivní pro daná vyhledávací kritéria.
Pro více informací o optimalizaci indexu je velmi užitečný tento článek:Optimalizace složených indexů MongoDB .