MongoDB_07之索引

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"})
 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值