MongoDB——索引属性之隐藏索引(Hidden Indexes)

Posted 小志的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MongoDB——索引属性之隐藏索引(Hidden Indexes)相关的知识,希望对你有一定的参考价值。

目录

一、MongoDB官网地址

二、隐藏索引(Hidden Indexes)的概述

  • 隐藏索引对查询规划器不可见,不能用于支持查询。
  • 通过对规划器隐藏索引,用户可以在不实际删除索引的情况下评估删除索引的潜在影响。如果影响是负面的,用户可以取消隐藏索引,而不必重新创建已删除的索引。4.4新版功能

三、隐藏索引(Hidden Indexes)的语法

  • 创建隐藏索引(创建单键索引并指定hidden属性为true)

    db.collection.createIndex(fileName:1,hidden:true);
    
  • 隐藏现有索引

    db.collection.hideIndex(fileName:1);
    #或者
    db.collection.hideIndex("索引名称")
    
  • 取消隐藏索引

    db.collection.unhideIndex(fileName:1);
    #或者
    db.collection.unhideIndex("索引名称");
    

四、隐藏索引(Hidden Indexes)的示例

4.1、数据准备

  • 初始化数据

    db.scores.insertMany([
     "userid" : "newbie",
     "userid" : "abby", "score" : 82,
     "userid" : "nina", "score" : 90
    ])
    

  • 查看初始化数据

    db.getCollection('scores').find()
    

4.2、创建隐藏索引并测试查询是否使用到索引

  • 再scores集合中的userid字段创建隐藏索引

    db.scores.createIndex(
      userid: 1 ,
      hidden: true 
    );
    

  • 查看索引信息

    db.scores.getIndexes()
    

  • 测试:由下图的执行计划结果可知,没有使用索引

    db.scores.find(userid:"abby").explain()
    

4.3、取消创建的隐藏索引并测试查询是否使用到索引

  • 再scores集合中的userid字段取消创建的隐藏索引

    db.scores.unhideIndex(  userid: 1 );
    

  • 查看索引信息

    db.scores.getIndexes()
    

  • 测试:由下图的执行计划结果可知,使用了索引

    db.scores.find(userid:"abby").explain()
    

以上是关于MongoDB——索引属性之隐藏索引(Hidden Indexes)的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB——索引属性之部分索引(Partial Indexes)

MongoDB——索引属性之稀疏索引(Sparse Indexes)

MongoDB——索引属性之稀疏索引(Sparse Indexes)

MongoDB——索引属性之部分索引(Partial Indexes)

MongoDB——索引属性之TTL索引(TTL Indexes)

MongoDB——索引属性之TTL索引(TTL Indexes)