欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

mongoDb的索引

程序员文章站 2024-03-16 22:30:40
...

索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。

这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。

索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构

 

查看索引

db.user.getIndexes()

mongoDb的索引

 

创建索引

#说明:1表示升序创建索引,-1表示降序创建索引
db.user.createIndex({字段名:1/-1}) 

mongoDb的索引

 

创建联合索引,与创建索引一样,在其中多加字段

mongoDb的索引

 

删除索引

#删除索引, 通过name删除
db.user.dropIndex("age_1") 

mongoDb的索引

删除_id外的索引

db.user.dropIndexes()

查看索引的大小,单位为字节

db.user.totalIndexSize()

mongoDb的索引

 

----------------------------------------------------------------------------------------------------------------------------------------

执行计划

Mongodb查询分析可以确保我们建议的索引是否有效,是查询语句性能分析的重要工具

插入1000条数据(mongodb内部使用的是js的执行引擎,所以可以使用脚本的方式操作)

for(var i=1;i<1000;i++)db.user.insert({id:100+i,username:'name_'+i,age:10+i}) 

mongoDb的索引

 

查询执行计划

Db.user.find().explain()

WinningPlan表示最佳执行计划

Stage表示的含义,常见的有COLLSCAN/全表扫描、IXSCAN/索引扫描、 FETCH/根据索引去检索文档、SHARD_MERGE/合并分片结果、IDHACK/针对_id进行查询

mongoDb的索引

 

 

 

 

 

 

 

相关标签: mongoDb