MongoDB - 索引限制


在本章中,我们将了解索引限制及其其他组成部分。

额外开销

每个索引都会占用一些空间,并且会导致每次插入、更新和删除的开销。因此,如果您很少使用集合进行读取操作,那么不使用索引是有意义的。

内存使用情况

由于索引存储在 RAM 中,因此应确保索引的总大小不超过 RAM 限制。如果总大小增加了 RAM 大小,它将开始删除一些索引,从而导致性能损失。

查询限制

索引不能在使用以下命令的查询中使用 -

  • 正则表达式或否定运算符,例如 $nin、$not 等。
  • 算术运算符,如 $mod 等。
  • $where 子句

因此,始终建议检查查询的索引使用情况。

指数关键限制

从2.6版本开始,如果现有索引字段的值超过索引键限制,MongoDB将不会创建索引。

插入文档超出索引键限制

如果文档的索引字段值超过索引键限制,MongoDB 不会将任何文档插入到索引集合中。mongorestore 和 mongoimport 实用程序的情况也是如此。

最大范围

  • 一个集合不能有超过 64 个索引。
  • 索引名称的长度不能超过 125 个字符。
  • 复合索引最多可以有 31 个索引字段。