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

MongoDB + Python - meget langsom simpel forespørgsel

Er du sikker på, at dit indeks er oprettet? kan du give outputtet af getIndexes() af din samling

f.eks.:db.my_collection.getIndexes()

og forklaringen på din forespørgsel

db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28 }).explain()

PS:Jeg må selvfølgelig være enig med @Aesthete i, at du gemmer meget mere, end du behøver...

29/1/2014-opdatering

Perfekt! Som du kan se, har du fire forskellige indekser, når du kan oprette ET sammensat indeks, som vil inkludere dem alle.

definerer

db.my_collection.ensureIndex({created_at_year: 1, created_at_month: 1, created_at_day: 1, created_at_hour: 1 })

vil give dig et mere præcist indeks, der gør det muligt for dig at forespørge efter:

  • year
  • year og month
  • year og month og day
  • year og month og day og hour

Dette vil gøre dine forespørgsler (med de fire nøgler) meget hurtigere, fordi alle dine kriterier vil blive opfyldt i indeksdataene!

Bemærk venligst, at rækkefølgen af ​​nøgler i ensureIndex() er afgørende, at den rækkefølge faktisk definerer ovennævnte liste over forespørgsler!

Bemærk også, at hvis alt du behøver er disse 4 felter, end hvis du angiver en korrekt projektion
f.eks.:
db.my_collection.find({created_at_year: 2014, created_at_month: 1, created_at_day: 28}, { created_at_year: 1, created_at_month: 1, created_at_day: 1 })

så vil kun indekset blive brugt, hvilket er den maksimale ydeevne!



  1. mongodb $match operation i $lookup for at sammenligne objectId fungerer ikke som forventet

  2. MongoDB:find og findOne med indlejret array-filtrering

  3. MongoDb Filter Array

  4. Mongo grupper efter måned med UNIX millisekund tid