做了个小实验,比较了一下mongo联合索引和单独索引的查询效率。
新建两张一模一样mongo表clA和clB,插入相同的数据:
说明:
1、tagId的变化范围从91000到91449,readTime是从“2017-07-06”到“2018-03-08”,day是readTime的日期简化(增加此字段是为了给时间加一个索引,加快指定时间范围的查询)
2、clA添加一个联合索引:{tagId:1, day:1}
3、clB添加两个单独索引:{tagId:1}和{day:1}
4、为每个表插入相同的数据2337000条
使用explain()函数进行分析,可明显看出使用联合索引效率更高:
当然以上结论是针对上述特定业务需求及数据特点得出的结论,实际项目中还是要根据查询需求和数据特点使用更合适的索引。过多的索引会给数据库增加更多的负担,本项目中为了给表(前8个月2.2亿条数据,后期数据量会更大)建合适的索引,做了一个小规模测试。