Предположим, у меня есть коллекция в базе данных монго со следующими документами
{
"name" : "abc",
"email": "[email protected]",
"phone" : "+91 1234567890"
}
В коллекции много объектов (миллион или около того), и мое приложение, помимо регулярного добавления объектов в эту коллекцию, выполняет несколько различных типов поиска этих данных.
Один метод выполняет поиск со всеми тремя атрибутами (имя, адрес электронной почты и телефон), поэтому я могу создать составной индекс для этих трех полей, чтобы убедиться, что этот поиск работает эффективно.
db.mycollection.ensureIndex({name:1,email:1,phone:1})
Теперь у меня также есть методы в моем приложении, которые извлекают все объекты с одинаковым именем (плохой пример, я знаю). Поэтому мне нужен индекс для поля имени.
db.mycollection.ensureIndex({name:1})
Постепенно мое приложение разрастается до такой степени, что мне приходится индексировать другие поля.
Теперь мой вопрос. Если каждый из атрибутов проиндексирован отдельно, имеет ли смысл поддерживать составные индексы для всех трех атрибутов (или двух атрибутов)?
Очевидно, это плохой пример... Если бы я создавал коллекцию для хранения нескольких контактных данных человека, я бы использовал массивы. Но этот вопрос касается исключительно индексов.
phone
. Обязательно прочтите этот раздел: docs.mongodb.org/manual/core/ индексы/#составные-индексы - person WiredPrairie   schedule 27.06.2013