Почему не работает этот индекс монго? - PullRequest
0 голосов
/ 20 октября 2011

Я добавляю индекс сюда:

db.products.ensureIndex({current_features:1})

Но тогда это не оказывает никакого влияния здесь:

db.products.find({"current_features" : {"$exists" : true}}).explain()
{
    "cursor" : "BasicCursor",
    "nscanned" : 20995,
    "nscannedObjects" : 20995,
    "n" : 2,
    "millis" : 94,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "isMultiKey" : false,
    "indexOnly" : false,
    "indexBounds" : {

    }
}

1 Ответ

2 голосов
/ 20 октября 2011

Вы запрашиваете каждый кортеж с указанным полем, монго использует индекс для этого начиная с версии 2.0, из документа:

До версии 2.0 $ не можетиспользовать индекс.Индексы для других полей все еще используются.

Вместо этого следует использовать разреженный индекс .Разреженный индекс будет в основном индексировать только те документы, которые имеют индексированное поле.Таким образом, ваш запрос будет предварительно рассчитан, что обеспечит максимальную скорость.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...