mongoDb的索引
程序员文章站
2024-03-16 22:30:40
...
索引通常能够极大的提高查询的效率,如果没有索引,MongoDB在读取数据时必须扫描集合中的每个文件并选取那些符合查询条件的记录。
这种扫描全集合的查询效率是非常低的,特别在处理大量的数据时,查询可以要花费几十秒甚至几分钟,这对网站的性能是非常致命的。
索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构
查看索引
db.user.getIndexes()
创建索引
#说明:1表示升序创建索引,-1表示降序创建索引
db.user.createIndex({字段名:1/-1})
创建联合索引,与创建索引一样,在其中多加字段
删除索引
#删除索引, 通过name删除
db.user.dropIndex("age_1")
删除_id外的索引
db.user.dropIndexes()
查看索引的大小,单位为字节
db.user.totalIndexSize()
----------------------------------------------------------------------------------------------------------------------------------------
执行计划
Mongodb查询分析可以确保我们建议的索引是否有效,是查询语句性能分析的重要工具
插入1000条数据(mongodb内部使用的是js的执行引擎,所以可以使用脚本的方式操作)
for(var i=1;i<1000;i++)db.user.insert({id:100+i,username:'name_'+i,age:10+i})
查询执行计划
Db.user.find().explain()
WinningPlan表示最佳执行计划
Stage表示的含义,常见的有COLLSCAN/全表扫描、IXSCAN/索引扫描、 FETCH/根据索引去检索文档、SHARD_MERGE/合并分片结果、IDHACK/针对_id进行查询
上一篇: java 二进制,八进制,十进制,十六进制间相互转换的方法
下一篇: Java文件流输入输出