Когда индексировать на нескольких клавишах в MongoDB
-
26-09-2019 - |
Вопрос
Скажем, у меня есть документ товара: Цена и: Кол-вольные поля. Иногда я хочу найти все документы, соответствующие данному: цена и: кол-во, и в другое время это будет либо: цена самостоятельно или: кол-во самостоятельно.
Я уже индексировал: цена: цена и: qty, но мне также нужно создать сложный индекс как на объединении, либо достаточно однозначные показатели?
Редактировать: Я нашел эту статью на сайте MongoDB очень полезным:
http://www.mongodb.org/display/docs/indexing+advice+ande+faq.
Решение
Индекс включен price
помогает с запросами на price
. Отказ Индекс включен qty
помогает с запросами на qty
. Отказ Индекс включен price
а также qty
помогает с запросами на price
И запросы price
а также qty
. Отказ Итак, это как получить два индекса по цене одного. Это не поможет запрограммировать на qty
, хоть.
Вы должны свести к минимуму количество индексов, которые у вас есть, поэтому выпустите один из ваших одноключевых индексов и создайте компонентный индекс, начиная с этой клавиши.
Как правило, если вы делаете запрос на x
, y
, а также z
, у вас должен быть индекс, как {x:1, y:1, z:1}
. Отказ Этот индекс быстро сделает следующие запросы:
db.foo.find({x : ..., y : ..., z : ...})
db.foo.find({x : ..., y : ...})
db.foo.find({x : ...})
Это не сделает эти запросы быстро:
db.foo.find({y : ..., z : ...})
db.foo.find({y : ...})
Таким образом, убедитесь, что ваш запрос имеет начальную клавишу индекса в нем.
Другие советы
Если вам нужно: цена самостоятельно или: кол-во самостоятельно, тогда сложный индекс не будет работать.