MongoDB索引

  • 介绍

    • 增加查询效率,不必每次都全表扫描
    • 单字段索引:在用户单个字段上创建升序/降序索引
    • 复合索引:在多个字段上添加索引;如{name:1, age:-1},关注field顺序
    • 其他索引:地理空间索引,文本索引,HASH索引
  • 查看INDEX

    • db.collection_name.getIndexes()

    • v: 2, 版本号
    • "_id":1, _id字段,升序索引
    • name: 默认索引名为 field_
    • ns: namespace, dbname.collecition_name
  • 创建INDEX

    • db.collection_name.createIndex(keys,options)
      • keys: 可以试单个field,也可以是多个
      • options:
        • unique: 是否建立唯一索引,unique:true 则是,默认false
        • name: 索引名称,如果未指定,则默认是"field_升降方式"的形式
      • 创建单字段索引:db.hero.createIndex({age:1})
      • 创建复核索引:db.hero.createIndex({age:-1,name:1})
  • 删除INDEX

    • 移除指定索引: db.collection_name.dropIndex(index)
      • 根据索引名删:db.hero.dropIndex("age_-1")
      • 根据field删:db.hero.dropIndex({"age" : -1,"name" : 1})
    • 删除所有索引: db.collection_name.dropIndexes()
    • 注意:即使删除所有索引,主键不会被删除;
  • 索引的使用

    • 查看执行计划:可以显示查询是否走了索引,走了哪个索引;
      • db.collection.find(query,options).explain(options)
      • db.hero.find({"age":"21"}).explain()
        • "stage" : "IXSCAN",
  • 涵盖的查询:

    • 查询的字段正好是索引的字段,不涉及索引外的其他字段;则无需回表,效率高
    • db.hero.find({"age":"21"},{age:1,_id:0}).explain()
      • "stage" : "PROJECTION" 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值