问题
最近项目中有使用到MongoDb,但是发现接口的速度异常的缓慢,最终定位到是Mongodb count()查询的问题
count()带条件的情况下的查询时间16s(这是我本地的测试环境性能较差,线上的服务器8核16G内存大概需要1.6s左右
)
解决办法
- 添加索引
- 修改查询语句,并命中索引
索引不能被查询使用:$regex
,$nin
,$not
,$mod
,$where
子句
集合中索引不能超过64个
,索引名的长度不能超过128
个字符,一个复合索引最多可以有31
个字段
由于索引是存储在内存(RAM)中
,你应该确保该索引的大小不超过内存的限制。如果索引的大小大于内存的限制,MongoDB会删除一些索引,这将导致性能下降
现有的索引字段的值超过索引键的限制
,MongoDB中不会创建索引。
检测语句是否使用索引,可以用explain
来查看