sql >> Databasteknik >  >> NoSQL >> MongoDB

Varför spelar indexriktningen roll i MongoDB?

MongoDB sammanfogar den sammansatta nyckeln på något sätt och använder den som nyckeln i ett BTree.

När du hittar enstaka föremål – Ordningen på noderna i trädet är irrelevant.

Om du returnerar en rad noder – Elementen nära varandra kommer att vara nere i samma grenar på trädet. Ju närmare noderna är i området desto snabbare kan de hämtas.

Med ett enda fältindex - Ordern spelar ingen roll. Om de ligger nära varandra i stigande ordning kommer de också att ligga nära varandra i fallande ordning.

När du har en sammansatt nyckel - Ordningen börjar spela roll.

Till exempel, om nyckeln är A stigande B stigande kan indexet se ut ungefär så här:

Row   A B
1     1 1
2     2 6
3     2 7 
4     3 4
5     3 5
6     3 6
7     5 1

En fråga för A stigande B fallande kommer att behöva hoppa runt indexet för att returnera raderna och kommer att vara långsammare. Till exempel kommer den att returnera rad 1, 3, 2, 6, 5, 4, 7

En intervallfråga i samma ordning som indexet returnerar helt enkelt raderna sekventiellt i rätt ordning.

Att hitta en post i ett BTree tar O(Log(n)) tid. Att hitta ett intervall av poster i ordning är bara OLog(n) + k där k är antalet poster som ska returneras.

Om posterna är ur funktion kan kostnaden bli så hög som OLog(n) * k



  1. Hur man tar bort ett element från en dubbelkapslad array i ett MongoDB-dokument.

  2. MongoDB - Importera data

  3. använd node-redis med nod 8 util.promisify

  4. MongoDB $substrCP