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

Mongodb:Dopad $HINT na výkon

Můžete prosím specifikovat složený index, který jste vytvořili. Nemám moc dobrou pověst, takže jsem se na to nemohl zeptat v komentáři. Ale mám možnou odpověď na vaši otázku. Mongo používá vlastnost nazvanou "Rovnost-Sort-Range", která se chová jiným způsobem. Zvažte níže uvedenou situaci – Máte několik dokumentů s poli {jméno :řetězec, pin :šestimístné číslo, SSN :devítimístné číslo} a máte dva indexy jako - {jméno:1, pin:1, ssn:1} a druhý index je {name:1, ssn :1, pin :1} nyní zvažte následující dotazy:

  1. db.test.find({name: "XYZ", pin: 123456"}).sort({ssn: 1}) Tento dotaz použije první index, protože máme složený index v pokračování. Název, PIN, ssn jsou v pokračování.
  2. db.test.find({name: "XYZ", pin: {$gt :123456"}}).sort({ssn: 1}) Očekáváte, že v tomto dotazu bude použit první index. Tento dotaz však překvapivě použije sekundový index, protože má operaci rozsahu na pinu.

Vlastnost Equality-sort-range říká, že plánovač dotazů použije index na poli, které slouží - "rovnost-sort-range" lépe. Druhý dotaz má rozsah na pinu, takže bude použit druhý index, zatímco první dotaz bude mít stejnou hodnotu ve všech polích, takže bude použit první index.




  1. Agregace MongoDB $rozdělit vypočítaná pole

  2. redis a watch + multi umožňuje souběžné uživatele

  3. MongoDb:jak vytvořit správný (složený) index pro data s mnoha prohledávatelnými poli

  4. $lookup, když je ForeignField pole