sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB Mnoho indexů vs. jeden index na řadě dílčích dokumentů?

To se v podstatě scvrkává na to, zda je 10 indexů velikosti N efektivnější než jeden index velikosti N * 10. Pokud se podíváte čistě na čtení, pak by samostatné indexy měly být vždy rychlejší. Přidružené procházky b-stromem prozkoumají menší sadu klíčů atd.

Je však třeba zvážit několik bodů:

  • Indexy v polích pole v zásadě indexují každý prvek pole samostatně. Režie vyhledávání jako taková bude nanejvýš 1-2 dodatečné kroky během procházky b-stromem, což je zanedbatelný výkon. Jinými slovy, budou téměř stejně rychlé.
  • Mít 10 indexů může znamenat, že každá aktualizace/vložení bude vyžadovat aktualizaci více než jednoho indexu (v závislosti na tom, zda vaše indexy sdílejí pole nebo zda aktualizujete více než 1 časové razítko najednou). Toto je důležitý faktor výkonu.
  • Použití indexu pole trochu usnadňuje přidávání dalších časových razítek (např. Timestamp10).
  • Počet jmenných prostorů, které můžete použít na databázi, je omezen (24 kB) a každý index zabírá jeden. Pokud vytvoříte samostatný index pro pole, může to být problém.
  • Nejdůležitější je, že index pole je mnohem přímočařejší a zjednoduší váš kód, a tím i udržovatelnost. Vzhledem k omezeným rozdílům ve výkonu bych řekl, že toto je nejsilnější motivace pro použití indexu pole.



  1. Mongodb:získejte pouze listy stromu

  2. BSON::ObjectId vs Mongo::ObjectID

  3. mongoose .js model bez exportu, vyžadující ve složce prašník stále fungující schéma

  4. Agregát MongoDB v rámci denního seskupení