MongoDB索引的限制/缺点
索引额外的开销:
每索引占据一定的空间,并且会导致每个插入,更新和删除的开销。所以,如果很少使用集合进行读操作,建议不要使用索引。
RAM用法:
由于索引存储在RAM中,应该确保索引的总大小不超过内存的大小限制。如果RAM总大小的增加,它会就开始删除一些索引,从而导致性能的损失。
查询的限制:
索引不能在其中使用查询中,而使用:
- 正则表达式或取反运算符,如 $nin, $not 等
- 算术运算符类似 $mod, etc.
- $where 子句
因此,查询始终检查索引的使用。
索引键限制:
从2.6版本开始,如果现有的索引字段的值超过了索引键的限制,MongoDB将不会创建索引。
插入文档超过索引键限制:
如果文档的索引字段值超过索引键限制,MongoDB 将不插入任何文档到索引的集合。在 mongorestore 和 mongoimport 实用工具的情况相同。
最大范围:
- 集合不能超过64个索引
- 索引名的长度不能超过125个字符
- 一个复合索引最多可以有31字段索引