sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB Många index vs. enstaka index på en rad underdokument?

Detta kokar i princip ner till om 10 index av storlek N är mer effektiva än ett index av storlek N * 10. Om du bara tittar på läsningar bör de separata indexen alltid vara snabbare. De tillhörande b-trädvandringarna kommer att undersöka en mindre nyckeluppsättning etc.

Det finns dock ett par punkter att tänka på :

  • Index på matrisfält indexerar i princip varje matriselement separat. Som sådan kommer uppslagningen över huvudet att vara högst 1-2 ytterligare steg under b-tree walk, vilket är en försumbar prestationsträff. Med andra ord kommer de att vara nästan lika snabba.
  • Att ha 10 index kan innebära att varje uppdatering/infogning kräver att mer än ett index uppdateras (beroende på om dina index delar ett fält eller om du uppdaterar mer än 1 tidsstämpel åt gången). Detta är ett viktigt prestandaövervägande.
  • Att använda ett arrayindex gör det lite lättare att lägga till ytterligare tidsstämplar (t.ex. Timestamp10).
  • Det finns en gräns för antalet namnutrymmen du kan använda per databas (24k) och varje index tar upp ett. Om du gör ett separat index per fält kan detta bli ett problem.
  • Det viktigaste är att arrayindexet är mycket enklare och kommer att förenkla din kod och därmed underhållbarheten. Med tanke på de begränsade prestandaskillnaderna skulle jag säga att detta är den starkaste motivationen att välja ett arrayindex här.



  1. Ansluter till fjärråtergivningsserver

  2. MongoDB Ruby Driver 2.5.x problem med skiftlägeskänslighet med värdnamn på replikuppsättningar

  3. Hur använder man variabler i MongoDB-frågan?

  4. mongoose:middleware pre deleteOne-alternativ fungerar inte