-
介绍
- 增加查询效率,不必每次都全表扫描
- 单字段索引:在用户单个字段上创建升序/降序索引
- 复合索引:在多个字段上添加索引;如{name:1, age:-1},关注field顺序
- 其他索引:地理空间索引,文本索引,HASH索引
-
查看INDEX
- db.collection_name.getIndexes()
- v: 2, 版本号
- "_id":1, _id字段,升序索引
- name: 默认索引名为 field_
- ns: namespace, dbname.collecition_name
-
创建INDEX
- db.collection_name.createIndex(keys,options)
- keys: 可以试单个field,也可以是多个
- options:
- unique: 是否建立唯一索引,unique:true 则是,默认false
- name: 索引名称,如果未指定,则默认是"field_升降方式"的形式
- 创建单字段索引:db.hero.createIndex({age:1})
- 创建复核索引:db.hero.createIndex({age:-1,name:1})
- db.collection_name.createIndex(keys,options)
-
删除INDEX
- 移除指定索引: db.collection_name.dropIndex(index)
- 根据索引名删:db.hero.dropIndex("age_-1")
- 根据field删:db.hero.dropIndex({"age" : -1,"name" : 1})
- 删除所有索引: db.collection_name.dropIndexes()
- 注意:即使删除所有索引,主键不会被删除;
- 移除指定索引: db.collection_name.dropIndex(index)
-
索引的使用
- 查看执行计划:可以显示查询是否走了索引,走了哪个索引;
- db.collection.find(query,options).explain(options)
- db.hero.find({"age":"21"}).explain()
- "stage" : "IXSCAN",
- 查看执行计划:可以显示查询是否走了索引,走了哪个索引;
-
涵盖的查询:
- 查询的字段正好是索引的字段,不涉及索引外的其他字段;则无需回表,效率高
- db.hero.find({"age":"21"},{age:1,_id:0}).explain()
- "stage" : "PROJECTION"
12-15
12-16
04-26
995
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交