sql >> Database >  >> NoSQL >> MongoDB

Waarom is de richting van de index van belang in MongoDB?

MongoDB voegt de samengestelde sleutel op de een of andere manier samen en gebruikt deze als de sleutel in een Btree.

Bij het vinden van losse items - De volgorde van de knooppunten in de boom is niet relevant.

Als u een reeks knooppunten retourneert - De elementen die dicht bij elkaar liggen, bevinden zich in dezelfde takken van de boom. Hoe dichter de knooppunten zich in het bereik bevinden, hoe sneller ze kunnen worden opgehaald.

Met een enkele veldindex - De volgorde maakt niet uit. Als ze in oplopende volgorde dicht bij elkaar staan, zullen ze ook in aflopende volgorde dicht bij elkaar staan.

Als je een samengestelde sleutel hebt - De volgorde begint ertoe te doen.

Als de sleutel bijvoorbeeld A oplopend B oplopend is, kan de index er ongeveer zo uitzien:

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

Een zoekopdracht voor A oplopend B aflopend zal in de verkeerde volgorde door de index moeten springen om de rijen te retourneren en zal langzamer zijn. Het retourneert bijvoorbeeld Rij 1, 3, 2, 6, 5, 4, 7

Een bereikquery in dezelfde volgorde als de index retourneert de rijen gewoon opeenvolgend in de juiste volgorde.

Het vinden van een record in een Btree kost O(Log(n)) tijd. Een reeks records in volgorde vinden is alleen OLog(n) + k waarbij k het aantal records is dat moet worden geretourneerd.

Als de records niet in orde zijn, kunnen de kosten oplopen tot OLog(n) * k



  1. Hoe mongodb-clients te verbinden met lokale Meteor MongoDB

  2. Opvulling in SQL

  3. Is master altijd de instantie opnieuw met de kleinste prioriteit?

  4. Unieke documenten die meerdere waarden gebruiken in Mongoose Schema