В MongoDb у меня есть индекс {a:1,b:1}
. Создает еще один индекс {a:1}
бесполезный, поскольку он уже покрыт другим?MongoDB: Второй индекс бесполезен?
Мои запросы следующие: findOne({a:"...",b:"..."})
или find({a:"..."})
.
В MongoDb у меня есть индекс {a:1,b:1}
. Создает еще один индекс {a:1}
бесполезный, поскольку он уже покрыт другим?MongoDB: Второй индекс бесполезен?
Мои запросы следующие: findOne({a:"...",b:"..."})
или find({a:"..."})
.
Я думаю, что вам не нужно создавать другой индекс {a:1}
, из-за prefixes
.
Префикс индекса - это начальные подмножества индексированных полей. Например, рассмотрим следующий составной индекс:
{ "item": 1, "location": 1, "stock": 1 }
Индекс имеет следующие индексные префиксы:
{ item: 1 } { item: 1, location: 1 }
Для индекса соединения, MongoDB может использовать индекс для поддержки запросов на указательном префиксов. Таким образом, MongoDB может использовать индекс для запросов по следующим направлениям:
item
поля,item
поля иlocation
поля,item
поля иlocation
поля иstock
поле.
и создание составного индекса является более эффективным [1].
И MongoDB может использовать пересечение либо всего индекса, либо префикса индекса [2].
Отъезд MongoDB docs Create a compound index.
Следующая операция создает индекс восходящий на пункт и фондовых полей:
db.products.createIndex({ "item": 1, "stock": 1 })
В дополнение к поддержке запросов, которые соответствуют по всем полям индекса, составные индексы могут поддерживать запросы, которые соответствуют на префикс полей индекса . То есть, индекс поддерживает запросы на
item
поле как также какitem
иstock
поля:
db.products.find({ item: "Banana" })
db.products.find({ item: "Banana", stock: { $gt: 5 } })
Для индекса соединения, MongoDB может использовать индекс для поддержки запросов на указательном префиксов.
Кстати, если создать составной индекс:
{ "item": 1, "location": 1, "stock": 1 }
MongoDB может использовать индекс для запросов по следующим направлениям:
Но это было бы не так эффективно на item
и stock
.
Надеюсь, это поможет.
Это действительно не отвечает на мой вопрос, но ваша ссылка делает. «Следующий индекс в коллекции: {x: 1, y: 1, z: 1} Может поддерживать запросы, поддерживаемые следующими индексами: {x: 1}, {x: 1, y: 1}" – RainingChain
@RainingChain Извините для этого я обновил свой ответ, надеюсь, что это поможет. – McGrady