MongoDB nějakým způsobem zřetězí složený klíč a použije ho jako klíč v BTree.
Při hledání jednotlivých položek - Pořadí uzlů ve stromu je irelevantní.
Pokud vracíte rozsah uzlů - Prvky blízko sebe budou dole ve stejných větvích stromu. Čím blíže jsou uzly v dosahu, tím rychleji je lze získat.
S indexem jednoho pole - Na pořadí nezáleží. Pokud jsou blízko u sebe ve vzestupném pořadí, budou také blízko u sebe v sestupném pořadí.
Když máte složený klíč - Na pořadí začíná záležet.
Pokud je například klíč A vzestupně B vzestupně, index může vypadat nějak takto:
Row A B 1 1 1 2 2 6 3 2 7 4 3 4 5 3 5 6 3 6 7 5 1
Dotaz na A vzestupně B sestupně bude muset přeskakovat index mimo pořadí, aby vrátil řádky, a bude pomalejší. Například vrátí řádek 1, 3, 2, 6, 5, 4, 7
Rozsahový dotaz ve stejném pořadí jako index jednoduše vrátí řádky postupně ve správném pořadí.
Nalezení záznamu v BTree trvá O(Log(n)) čas. Nalezení rozsahu záznamů v pořadí je pouze OLog(n) + k, kde k je počet záznamů, které se mají vrátit.
Pokud jsou záznamy mimo provoz, náklady mohou být až OLog(n) * k