虚位以待(AD)
虚位以待(AD)
首页 > 数据库 > MongoDB数据库 > MongoDB索引

MongoDB索引
类别:MongoDB数据库   作者:码皇   来源:<a href="http://blog.csdn.net/qq_31247885" target="_blank" rel="nofollow   点击:

Mongodb索引 在mongodb中一个条件查询语句,mongodb会去检索每一个文档中的每一个字段。如果数据量增大将会极大的增加数据库的压力,并且极大的降低查询速度,将结果限制为1,则匹配到一条文档后会停止扫描

在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做为条件则会使用索引。注:复合索引字段创建的顺序很重要

相关热词搜索: