2012-12-17 4 views
20

Nie mogę uzyskać dokładnej różnicy między "nscanned" i "nscannedObjects" w wynikach zapytania wyjaśniającego Mongodb.explain() in Mongodb: różnice między "nscanned" i "nscannedObjects"

Na MongoDB Explain documentation mogę przeczytać:

nscanned Kasa (dokumentów lub haseł indeksu) zbadał. Elementy mogą być obiektami lub kluczami indeksu. Jeśli włączony jest "indeks objęty", nscanned może być wyższy niż nscannedObjects.

nscannedObjects Liczba zeskanowanych dokumentów.

Czym różnią się te dwa pola? A dokładniej co to dokładnie znaczy, kiedy mam kwerendę, która używa BtreeCursor (indeksu), a te dwa pola są dwie różne wartości, na przykład:

{ 
    "cursor" : "BtreeCursor a_1_b_1", 
    "isMultiKey" : false, 
    "n" : 5, 
    "nscannedObjects" : 5, 
    "nscanned" : 9, 
    (...) 
} 

wiem, co to jest "covered index" jest. Chciałbym zrozumieć, co dokładnie zrobiło zapytanie w powyższym przykładzie: Przekazał ("przeskanował") 9 elementów (nscanned = 9), gdzie wszystkie z nich są wpisami indeksu i odczytują ("zbadano") wartość tylko 5 z nich (nscannedObjects = 5) do wytworzenia zestawu wyników?

Odpowiedz

0

czy "kursor" jest Indeks ==> nskanned = nie. indeksu zeskanowanego else if "cursor" to FullTableScan ==> nscanned = no. dokumentu skanowane

nscannedObjects ==> Nr dokumentu skanowane

podczas odpytywania, starają się zminimalizować wszystkie liczby, tj nscanned i nscannedObjects oba są minimalne oznacza zapytanie powinien biegać szybciej!

Powiązane problemy