1、在任何的数据库之中,索引都是一种提升数据库检索性能的手段,在MongoDB数据库中依然会存在有两种的索引创建:自动创建、手动创建
2、范例:重新创建一个简单的students集合,在students没有设置任何索引,通过getIndexes()函数观察存在的索引内容;=>
db.students.getIndexes(); => 有一个“_id”列的索引内容
3、索引创建:db.集合名称.ensureIndex({列 : 1});
|- 设置的 1 表示索引将按照升序的方式进行排列,降序是 -1;
(01)、范例:创建一个索引,在age字段上 => db.students.ensureIndex({"age": 1});
此时并没有设置索引的名字,索引的名字是自动命名的。命名格式:“字段名称_索引的排序模式”
(02)、针对于age字段上的索引做一个分析 => db.students.find({"age": 19}).explain();
*注:此时的查询使用了索引的技术,但是下面再来观察一个查询,不使用索引查询。
(03)、针对于score字段上设置查询,不使用索引 => db.students.find({"score": {"$gt": 60}}).explain();
*注:此时在score字段上并没有设置索引,当前的索引形式变成了全局扫描的模式。
(04)、如果年龄和成绩一起查询 => db.students.find({"$or": [{"age": {"$gt": 19}},{"score": 60}}).explain();
这个时候虽然age字段上存在有索引,但是有一个很明显的问题,由于score没有索引,依然使用全表扫描,
为了解决此事的问题,可以使用符合索引。