MongoDB конкатенира съставния ключ по някакъв начин и го използва като ключ в BTree.
При намиране на единични артикули - Редът на възлите в дървото е без значение.
Ако връщате диапазон от възли - Елементите близо един до друг ще бъдат надолу по същите клони на дървото. Колкото по-близо са възлите в обхвата, толкова по-бързо могат да бъдат извлечени.
С един индекс на поле - Редът няма значение. Ако са близо един до друг във възходящ ред, те също ще бъдат близо един до друг в низходящ ред.
Когато имате съставен ключ - Редът започва да има значение.
Например, ако ключът е A, възходящ B, възходящ, индексът може да изглежда така:
Row A B 1 1 1 2 2 6 3 2 7 4 3 4 5 3 5 6 3 6 7 5 1
Заявка за A възходяща B низходяща ще трябва да прескача индекса извън ред, за да върне редовете и ще бъде по-бавна. Например ще върне ред 1, 3, 2, 6, 5, 4, 7
Обхватна заявка в същия ред като индекса просто ще върне редовете последователно в правилния ред.
Намирането на запис в BTree отнема O(Log(n)) време. Намирането на диапазон от записи в ред е само OLog(n) + k, където k е броят на записите за връщане.
Ако записите не са в ред, цената може да бъде толкова висока, колкото OLog(n) * k