MongoDB - ограничения индексирования
В этой главе мы узнаем об ограничениях индексации и других ее компонентах.
Дополнительные накладные расходы
Каждый индекс занимает некоторое пространство, а также вызывает накладные расходы при каждой вставке, обновлении и удалении. Поэтому, если вы редко используете свою коллекцию для операций чтения, имеет смысл не использовать индексы.
Использование RAM
Поскольку индексы хранятся в ОЗУ, вы должны убедиться, что общий размер индекса не превышает лимит ОЗУ. Если общий размер увеличивает размер ОЗУ, он начнет удалять некоторые индексы, что приведет к потере производительности.
Ограничения запроса
Индексирование нельзя использовать в запросах, которые используют -
- Регулярные выражения или операторы отрицания, такие как $ nin, $ not и т. Д.
- Арифметические операторы, такие как $ mod и т. Д.
- предложение $ where
Следовательно, всегда рекомендуется проверять использование индекса для ваших запросов.
Пределы ключа индекса
Начиная с версии 2.6, MongoDB не будет создавать индекс, если значение существующего поля индекса превышает ограничение ключа индекса.
Вставка документов, превышающих предел ключа индекса
MongoDB не будет вставлять какой-либо документ в индексированную коллекцию, если значение индексированного поля этого документа превышает предел ключа индекса. То же самое и с утилитами mongorestore и mongoimport.
Максимальные диапазоны
- Коллекция не может иметь более 64 индексов.
- Длина имени индекса не может превышать 125 символов.
- Составной индекс может иметь максимум 31 индексируемое поле.