日期:2014-05-16  浏览次数:20451 次

关于Mongodb索引创建的一些体会

mongodb索引分类以及创建我就不多说了,如果想了解可以直接在百度上搜索,这里我说一下关于索引创建的个人想法。

1、优先给一些Id类字段添加索引,查询时可以缩小扫描范围。

?

2、创建联合索引时,索引字段顺序很重要,如果第一个字段和索引不匹配,则基本不会命中该索引。

?

3、有些索引创建后,特别是嵌套查询,比如说{ "audit.experts" : { "$elemMatch" : { "expertId" : "37add534bc554a8e80e8700ae19e55f6", "result" : { "$in" : ["success", "fail"] } } } },这个查询不添加索引需要5s ,添加索引{"audit.experts.expertId":1,"audit.experts.result":1}后无法命中索引,这时就需要强制使用索引,mongodb提供了hint来强制使用某一个索引。

?

4、在优化过程中,我还发现有一些查询(集合中的数据都是嵌套的),使用了索引(联合索引)反而比不是用索引更慢。

?

5、使用模糊查询的字段尽量不要添加到联合索引中,对查询效率影响比较小。