索引支持的解析度的查询效率。如果没有索引,MongoDB 必须扫描每一个文档的集合,要选择那些文档相匹配的查询语句。这种扫描的效率非常低,会要求 mongod 做大数据量的处理。
索引是一种特殊的数据结构,存储设置在一个易于遍历形式的数据的一小部分。索引存储一个特定的字段或一组字段的值,在索引中指定的值的字段排列的。
索引:
测试:
1.500w记录 没有建立索引情况下,从500w数据库中查询某一条几率需要花多久时间
2.位集合建立索引,在建立索引之后查找,需要多久时间
use mydb
for(var i = 0; i < 5000000; i++) {
db.person.insert({"name":"feng"+i}, "age":i);
}
创建普通索引:db.person.ensureIndex({"age":1})
查看关于索引的相关信息,使用命令 db.collection.stats()
删除索引,使用命令 db.collection.dropIndex({key:1})
创建唯一索引:db.person.ensureIndex({"age":1},{"unique":true}) 则age中的值是唯一的,不能重复
发现:创建索引后,查询数据的时间明显减少了很多。
推荐一个很好的学校mongodb的网站:http://www.yiibai.com/mongodb/mongodb_indexing.html