目录
一、MongoDB官网地址
- 一、MongoDB官网地址
- 二、隐藏索引(Hidden Indexes)的概述
- 三、隐藏索引(Hidden Indexes)的语法
- 四、隐藏索引(Hidden Indexes)的示例
- 4.1、数据准备
- 4.2、创建隐藏索引并测试查询是否使用到索引
- 4.3、取消创建的隐藏索引并测试查询是否使用到索引
- MongoDB官网地址:https://www.mongodb.com/docs/manual/core/index-single/
- 隐藏索引对查询规划器不可见,不能用于支持查询。
- 通过对规划器隐藏索引,用户可以在不实际删除索引的情况下评估删除索引的潜在影响。如果影响是负面的,用户可以取消隐藏索引,而不必重新创建已删除的索引。4.4新版功能。
-
创建隐藏索引(创建单键索引并指定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("索引名称");
-
初始化数据
db.scores.insertMany([ {"userid" : "newbie"}, {"userid" : "abby", "score" : 82}, {"userid" : "nina", "score" : 90} ])
-
查看初始化数据
db.getCollection('scores').find({})
-
再scores集合中的userid字段创建隐藏索引
db.scores.createIndex( { userid: 1 }, { hidden: true } );
-
查看索引信息
db.scores.getIndexes()
-
测试:由下图的执行计划结果可知,没有使用索引
db.scores.find({userid:"abby"}).explain()
-
再scores集合中的userid字段取消创建的隐藏索引
db.scores.unhideIndex( { userid: 1} );
-
查看索引信息
db.scores.getIndexes()
-
测试:由下图的执行计划结果可知,使用了索引
db.scores.find({userid:"abby"}).explain()