MongoDB_07之索引

来源:互联网 发布:iphone必备软件推荐 编辑:程序博客网 时间:2024/06/03 22:45

1.创建简单的索引  为name建索引  db.persons.ensureIndex({name:1}) //1表示正序,-1表示倒序2.索引使用需要注意的地方  2.1.创建索引的时候需注意1表示创建正序索引,-1表示建倒序索引  2.2.索引的创建在提高查询性能的同时会影响插入的性能      对于经常查询少插入的文档中可以考虑用索引      符合索引要注意索引的先后顺序      每个键全建立索引不一定能提高性能(合理创建索引)      在做排序工作的时候如果是超大数据量的时候可以考虑加上索引,用来提高排序的性能3.索引的名称  3.1 给哪个键建立索引,默认一般都是该键_1或该键_-1就是它的名称  3.2但也可以指定索引的名称,例如:给某个字段创建索引的同时指定索引的名字   db.persons.ensureIndex({name:-1},{name:"personName"})4.唯一索引  解决集合persons中不能插入重复的数值  则建立唯一索引  db.persons.ensureIndex({name:-1},{unique:true})5.剔除重复值   如果建立唯一索引之前已经有重复数值的处理(剔除重复值)  db.persons.ensureIndex({name:-1},{unique:true,dropDups:true})6.强制查询指定的索引(hint)  db.persons.find({name:"1person",_id:1}).hint({name:-1}) //指定的索引必须是已经创建了的索引,name是建立了倒序索引的字段7.Expain  详细查看本次查询使用哪个索引和查询数据的状态信息  db.persons.find({name:"1person"}).explain()8.system.indexes  在shell查看数据库已经建立的索引  db.system.indexes.find()  db.system.namespaces.find()9.执行创建索引的过程会暂时锁表如何解决?  为了不影响查询,我们可以让索引的创建过程发生在后台  db.persons.ensureIndex({name:-1},{background:true}) //在name这个字段上创建索引,并发生在后台10.删除索引  批量删除索引  db.runCommand({dropIndexes:"person",index:"*"})  精确删除索引  db.runCommand({dropIndexes:"persons",index:"name_-1"}) 


0 0