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