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

MongoDB-ydelsesproblem:Enkelt kæmpe samling vs flere små samlinger

Adskillelse af samlingerne giver dig et gratis indeks uden reelle overhead. Der er overhead til en indeksscanning, især hvis indekset ikke rigtig hjælper dig med at skære ned på antallet af resultater, det skal scanne (hvis du har en million resultater i indekset, men du skal scanne dem alle og inspicere dem, det vil ikke hjælpe dig meget).

Kort sagt, at adskille dem er en gyldig optimering, men du bør gøre dine indekser bedre til dine forespørgsler, før du faktisk beslutter dig for at tage den vej, hvilket jeg betragter som en drastisk foranstaltning (et indeks for produktpris kan hjælpe dig mere i dette tilfælde) .

Brug af explain() kan hjælpe dig med at forstå, hvordan forespørgsler fungerer. Nogle grundlæggende er:Du ønsker et lavt forhold mellem nscannet og n, ideelt set. Du vil ikke have scanAndOrder =sand, og du vil normalt ikke have BasicCursor (dette betyder, at du slet ikke bruger et indeks).




  1. Implementer automatisk udfyldningsfunktion ved hjælp af MongoDB-søgning

  2. Redis:fan ud nyhedsfeeds i liste eller sorteret sæt?

  3. Bemærk:Udefineret egenskab:MongoDB\Driver\Manager::$mydb i [Sti] i wamp-serveren

  4. MapReduce med MongoDB virkelig, virkelig langsom (30 timer vs 20 minutter i MySQL for en tilsvarende database)