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

MongoDB + Python - velmi pomalý jednoduchý dotaz

Jste si jisti, že je váš index vytvořen? můžete poskytnout výstup getIndexes() vaší sbírky

např.:db.my_collection.getIndexes()

a vysvětlení vašeho dotazu

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

PS:samozřejmě musím souhlasit s @Aesthete v tom, že ukládáte mnohem víc, než potřebujete...

Aktualizace z 29. 1. 2014

Perfektní! Jak vidíte, máte čtyři různé indexy, když můžete vytvořit JEDEN složený index, který je bude zahrnovat všechny.

definující

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

vám poskytne přesnější index, který vám umožní dotazovat se na:

  • year
  • year a month
  • year a month a day
  • year a month a day a hour

Díky tomu budou vaše dotazy (se čtyřmi klíči) mnohem rychlejší, protože všechna vaše kritéria budou splněna v datech indexu!

všimněte si prosím, že pořadí klíčů v ensureIndex() je zásadní, že pořadí ve skutečnosti definuje výše zmíněný seznam dotazů!

Všimněte si také, že pokud vše, co potřebujete, jsou tato 4 pole, pak pokud zadáte správnou projekci
např.:
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 })

pak bude použit pouze index, což je maximální výkon!



  1. node.js &express - globální moduly a osvědčené postupy pro strukturu aplikací

  2. Agregace Golang mongodb

  3. Získejte data ze 2 kolekcí v mongodb v jediném dotazu

  4. Dokumentace slibů Mongoose říká, že dotazy nejsou sliby?