mongodb(Index)

备忘mongoDb 索引的一些知识点。

1、索引是用以加速数据库查询的手段,在mongo中主要是采用B树的方式;

2、每个集合最多可增加64个索引,不建议增加过多索引,原因在于一是索引本身占用空间,二由于要维护一个B树的映射,增加索引后,数据库的增删改除了修改数据外,还要修改索引的数据结构,会影响效率;

3、mongo中采用db.user.ensureIndex({"name":1})的方式增加基本索引,1或者-1代表方向,即mongo内部采用什么样的顺序组织数据;

4、唯一索引,db.user.ensureIndex({"name":1},{"unique":true}),表示该索引字段唯一,默认的_id就是;此例中不允许同名;

5、复合唯一索引,db.user.ensureIndex({"name":1,"age":-1},{"unique":true})。此例中不允许同名且同年龄;

备注:当建立复合索引时,如果查询只用到其中一个字段,索引是不起作用的。

6、索引建立在每个数据库的system.indexes集合中,默认有_id索引;

7、索引可以修改,也可以删除,删除命令:db.runcommand({"dropIndexes":"user"},{"indexes":"*"}),删除集合user中全部索引;

备注:_id索引是无法删除的;

8、可以采用explain命令来查询SQL语句的效率,如db.user.find().explain();该命令会返回:

其中millis代表运行时间、cursor代表所使用的索引; 如果什么索引都没用,则显示BasicCursor

原文地址:https://www.cnblogs.com/Fredric-2013/p/4535320.html