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

x33g5p2x  于2022-05-06 转载在 其他  
字(1.1k)|赞(0)|评价(0)|浏览(472)

一、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()

相关文章