在mongodb中一个条件查询语句,mongodb会去检索每一个文档中的每一个字段。如果数据量增大将会极大的增加数据库的压力,并且极大的降低查询速度,将结果限制为1,则匹配到一条文档后会停止扫描,可以提升效率。但是如果要匹配的数据是最后几条就。。。所以同关系型数据库一样可以使用索引。
当你创建完成之后会发现查询的速度会大大提升。
代价:对于每添加的一个索引,每次写入、更新、删除都将花费更多时间。
索引的优化和关系型数据库的手法出入不大,大多数的关系型数据库的索引技巧同样可以适用mongodb
创建索引:db.collname.ensureIndex({“字段”:1});索引的创建时间会根据机器性能和集合的大小而有所不同。
复合索引:db.collname.ensureIndex({“字段”:1,“字段2”:1});复合索引开销非常大比如:{“age”:1,”name”:1},age相同的数据按照name升序排列
存放形式,如:
Age name
17 name1
17 name2
18 name3
18 name4
Mongodb对索引的使用方式取决于查询的类型:
1,db.collname.find({“age”:21}).sort({“name”:-1});由于索引的第二个字段,查询结果已经是有序的了,mongodb可以直接定位到age,而且不需要对结果进行排序
2,db.collname.find({“age”:{“$gte”,12,”$lte”:24}}).sort({“name”:-1});这个查询语句为使用索引,但是由于得到的结果name是无序的,所以mongodb还是会在内存中将其排序
Mongodb的复合索引同样遵循关系型数据库符合索引的前缀性特质。如:你在查询条件当中只将name作为条件,同样会去检索全表,索引不会起到任何作用。但将age做为条件则会使用索引。注:复合索引字段创建的顺序很重要
就爱阅读www.92to.com网友整理上传,为您提供最全的知识大全,期待您的分享,转载请注明出处。
来源: