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

doba vyhledávání s indexem> bez indexu

V tomto případě index nepomůže, protože vaše odpovídající sada výsledků obsahuje téměř celou kolekci. To znamená, že se musí načíst do paměti RAM a procházet většinu indexu, stejně jako načíst do paměti RAM a procházet samotné dokumenty.

Bez indexu by to pouze provedlo skenování tabulky, zkontrolovalo by každý dokument a v případě shody by se vrátilo.

V případech, jako je tento, kdy dotaz vrátí téměř celou kolekci, nemusí být index užitečný.

Přidání .limit() urychlí dotaz. Můžete také vynutit optimalizaci dotazů, aby nepoužíval index pomocí .hint():

db.collection.find().hint({$natural:1})

Můžete také vynutit, aby dotaz poskytl hodnoty výsledků přímo ze samotného indexu omezením vybraných polí pouze na ta, která jste indexovali. To mu umožňuje vyhnout se nutnosti vkládat jakékoli dokumenty po provedení indexového skenování.

Vyzkoušejte to a zjistěte, zda výstup vysvětlení ukazuje "indexOnly":true

db.numbers.find({number: {$gt: 10000}}, {number:1}).explain()

Podrobnosti zde:

http://www.mongodb.org /display/DOCS/Retrieving+a+Subset+of+Fields#RetrievingaSubsetofFields-CoveredIndexes




  1. jak používat mongoDB jako vyhledávač?

  2. Problém MongoDB NumberLong/$numberLong při převodu zpět na Java Object

  3. MongoDB přejmenovat pole databáze v poli

  4. Kde je AccountKey for CosmosDB v Azure Portal