sql >> Database teknologi >  >> NoSQL >> MongoDB

søgetid med indeks> uden indeks

I dette tilfælde hjælper indekset ikke, fordi dit matchende resultatsæt består af næsten hele samlingen. Det betyder, at den skal indlæses i RAM og gennemløbe det meste af indekset, samt indlæse i RAM og krydse dokumenterne selv.

Uden indekset ville det bare lave en tabelscanning, inspicere hvert dokument og returnere, hvis det matchede.

I tilfælde som dette, hvor en forespørgsel vil returnere næsten en hel samling, er et indeks muligvis ikke nyttigt.

Tilføjelse af en .limit() vil fremskynde forespørgslen. Du kan også tvinge forespørgselsoptimeringsværktøjet til ikke at bruge indekset med .hint():

db.collection.find().hint({$natural:1})

Du kan også tvinge forespørgslen til at angive resultatværdierne direkte fra selve indekset ved at begrænse de valgte felter til kun dem, du har indekseret. Dette gør det muligt at undgå behovet for at indlæse dokumenter efter at have udført indeksscanningen.

Prøv dette og se om forklaringsoutputtet indikerer "indexOnly":true

db.numbers.find({number: {$gt: 10000}}, {number:1}).explain()

Detaljer her:

http://www.mongodb.org /display/DOCS/Retrieving+a+Subset+of+Fields#RetrievingaSubsetofFields-CoveredIndexes




  1. Kan ikke oprette forbindelse til Mongo Cloud mongodb-databasen i Golang på Ubuntu

  2. Implementering af en nodejs-app til Google Cloud-platformen

  3. grupper efter forespørgsler om meteorindsamling

  4. Spring Redis - Læs konfiguration fra application.properties fil