什么是索引
索引是数据库中专门用于帮助用户快速查询数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可
为什么要使用索引
在数据量大的集合中使用索引,可以明显提高查询速度
创建索引
ensureIndex(key,option) : MongoDB 3.0 以后被废弃
createIndex(key,option) : 推荐使用
查看索引
collection.getIndexes(); 查看集合中所有索引
删除索引
collection.dropIndex(indexName); 按照索引名字删除单个索引
collection.dropIndexes(); 删除主键以外的所有索引
创建合适索引
问题:查询student_age不大于15岁的学生中,final_score最⾼高的10个⼈人,查询结果按final_score从⾼到低排序。如何创建索引?
查询语句: db.student_exam.find({ student_age: { $lte: 15 } }).sort({ final_score: -1 }).limit(10);
最合适的索引: createIndex({final_score: -1,student_age:1});
在创建了这种索引情况下,MongoDB大致会这样执行查询语句:
数据库会从final_score值为100的节点开始遍历,当发现有 student_age 值小于等于15的,就直接放到结果集中。当完成指定数量10个(指定 limit 个数)的查找后。数据库就可以直接将结果返回了,因为这时候,所有的结果本身就是按 final_score 降序排列的。