MongoDB 索引的限制
在本章中,我们将学习关于索引的限制以及其他组件。
额外开销
每个索引都占用一定的空间,并在每次插入、更新和删除时引起一定的开销。因此,如果您很少使用集合进行读操作,那么不使用索引是有道理的。
RAM使用
由于索引存储在RAM中,您应该确保索引的总大小不超过RAM限制。如果总大小超过了RAM的大小,系统将开始删除一些索引,导致性能损失。
查询限制
无法在使用以下查询的情况下使用索引:
- 正则表达式或否定操作符,如nin、not等。
- 算术运算符,如$mod等。
- $where子句。
因此,始终建议检查您查询的索引使用情况。
索引键限制
从2.6版本开始,如果现有索引字段的值超过索引键限制,MongoDB将不会创建索引。
插入超过索引键限制的文档
如果一个文档的索引字段值超过索引键限制,MongoDB将不会将该文档插入到索引集合中。mongorestore和mongoimport工具也是如此。
最大范围
- 一个集合不能拥有超过64个索引。
- 索引名称的长度不能超过125个字符。
- 复合索引最多可以有31个字段被索引。