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

Jednoduchý prefixový dotaz Mongodb s regulárním výrazem a řazením je pomalý

scanAndOrder: true ve výstupu Explain označuje, že dotaz musí načíst dokumenty a poté je seřadit v paměti, než se vrátí výstup. Toto je nákladná operace a bude mít dopad na výkon vašeho dotazu.

Existence scanAndOrder: true stejně jako rozdíl v nscanned n ve výstupu Explain označuje, že dotaz nepoužívá optimální index. V tomto případě se zdá, že je třeba provést skenování sbírky. Tento problém můžete vyřešit zahrnutím indexových klíčů do sort kritéria. Z mého testování:

db.posts.find({hashtags: /^noticias/ }).limit(15).sort({hashtags:1, rank : -1}).explain()

Nevyžaduje skenování a objednávání a vrací n a nscanned počtu záznamů, které hledáte. To by také znamenalo řazení podle hashtags klíč, který pro vás může nebo nemusí být užitečný, ale měl by zvýšit výkon dotazu.




  1. Více dotazů uvnitř dotazu mongodb

  2. MongoDB ReplicaSet – PRIMÁRNÍ role spadá na SEKUNDÁRNÍ, když zbývá pouze PRIMÁRNÍ

  3. MongoDB $acosh

  4. Mongo třídí podle vypočítané podmínky