MongoDB: выполнениеTimeMillis увеличено при добавлении индекса - PullRequest
2 голосов
/ 18 июня 2019

Я довольно озадачен тем, что из-за того, что поиск по полям в качестве «индекса» делает запрос «теоретически» медленнее.

У меня не очень большая коллекция элементов (6240), и у всех нихследующая структура.

const SomeSchema = new mongoose.Schema({
    data: String,
    from: {
        type: Number,
    },
    to: {
        type: Number,
    },
    timeStamp: {
        type: Date,
        default: new Date()
    }
})

SomeSchema.set('toJSON', {
    getters: true,
    transform: (doc, ret) => {
        delete ret.from
        delete ret.to
        return sanitizeSensitiveProperties(ret)
    }
})

export const Some = mongoose.model('Some', SomeSchema, 'somethings')

Странная вещь возникла, когда после попытки улучшить запрос я изменил схему на

...
    from: {
        type: Number,
        index: true
    },
    to: {
        type: Number,
        index: true
    },
...

С этой схемой я запускаю следующий запрос

db.rolls.find({from: {$lte: 1560858984}, to: {$gte: 1560858984}}).explain("executionStats")

Это результаты ПРИМЕЧАНИЕ: 1-й ЕДИНИЦЫ без индекса

"executionTimeMillis" : 6,
"totalKeysExamined" : 0,
"totalDocsExamined" : 6240,
"executionTimeMillis" : 15,
"totalKeysExamined" : 2895,
"totalDocsExamined" : 2895,

Имеет ли этот результат какой-либо смысл, или это просто монго?.explain() функция возиться?

Как вы можете видеть, я использую драйвер Mongoose в версии ^ 5.5.13 и я использую Mongo в версии 4.0.5

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