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

MongoDB Mange indekser vs. enkelt indeks på række af underdokumenter?

Dette koger dybest set ned til, om 10 indeks af størrelse N er mere effektive end et indeks af størrelse N * 10. Hvis du udelukkende ser på læsninger, bør de separate indeks altid være hurtigere. De tilhørende b-trævandringer vil undersøge et mindre nøglesæt osv.

Der er dog et par punkter at overveje :

  • Indekser på matrixfelter indekserer grundlæggende hvert matrixelement separat. Som sådan vil opslaget overhead højst være 1-2 ekstra trin under b-tree walk, hvilket er et ubetydeligt præstationshit. Med andre ord vil de være næsten lige så hurtige.
  • Hvis du har 10 indekser, kan det betyde, at hver opdatering/indsættelse kræver mere end ét indeks for at blive opdateret (afhængigt af om dine indekser deler et felt, eller om du opdaterer mere end 1 tidsstempel ad gangen). Dette er en væsentlig præstationsovervejelse.
  • Brug af et array-indeks gør det lidt nemmere at tilføje yderligere tidsstempler (f.eks. Timestamp10).
  • Der er en grænse for antallet af navneområder, du kan bruge pr. database (24k), og hvert indeks fylder ét. Hvis du laver et separat indeks pr. felt, kan dette blive et problem.
  • Vigtigst er det, at array-indekset er meget mere ligetil og vil forenkle din kode og dermed vedligeholde. I betragtning af de begrænsede præstationsforskelle vil jeg sige, at dette er den stærkeste motivation for at gå efter et array-indeks her.



  1. MongoDB fungerer ikke i Vagrant Centos Box

  2. MongoDB:Er det muligt at begrænse resultaterne af $lookup til bestemte felter (som en projektion)?

  3. Nyttige scripts til Couchbase Dba

  4. spring session redis 'Ingen bønne med navnet 'springSessionRepositoryFilter' er defineret'