Индекс Монго не используется (простой запрос в один столбец) - PullRequest
0 голосов
/ 19 марта 2012

Объяснение запроса поиска:

> db.datasources.find({nid: 19882}).explain();         
{
    "cursor" : "BtreeCursor nid_1",
    "nscanned" : 10161684,
    "nscannedObjects" : 10161684,
    "n" : 10161684,
    "millis" : 8988,
    "nYields" : 0,
    "nChunkSkips" : 0,
    "isMultiKey" : false,
    "indexOnly" : false,
    "indexBounds" : {
        "nid" : [
            [
                19882,
                19882
            ]
        ]
    }
}

Вот индексы для коллекции:

> db.datasources.getIndexes()  
[
    {
        "name" : "_id_",
        "ns" : "rocdocs_dev.datasources",
        "key" : {
            "_id" : 1
        }
    },
    {
        "_id" : ObjectId("4edcd725c605da5f200000a2"),
        "ns" : "rocdocs_dev.datasources",
        "key" : {
            "nid" : 1
        },
        "name" : "nid_1"
    },
    {
        "v" : 1,
        "key" : {
            "is_indexed" : 1
        },
        "ns" : "rocdocs_dev.datasources",
        "name" : "is_indexed_1"
    }
]

1 Ответ

2 голосов
/ 19 марта 2012

При этом используется индекс, отмеченный BtreeCursor. Если он не был верен, он сказал бы: BasicCursor

Хотя я вижу, что запрос занимает 9 секунд и сканирует то, что представляется всей коллекцией.

Вы добавили этот индекс после вставки этих документов?Может быть, это еще не завершено строительство?

Я бы рассмотрел перестройку индекса

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