3.3 单字段索引

3.3.1 了解单字段索引

  • MongoDB默认为所有集合都创建了一个 _id字段的单字段索引,而且这个索引是唯一的,不能删除
  • _id字段作为一个集合的主键,值是唯一的;
  • 对于一个集合来说,也可以在其他字段上创建单字段的唯一索引;

3.3.2 创建单字段索引准备工作

准备测试数据:

for(var i=1;i<10;i++) db.customers.insert({name:"jordan"+i,country:"American"})
for(var i=1;i<10;i++) db.customers.insert({name:"gaga"+i,country:"American"})
for(var i=1;i<10;i++) db.customers.insert({name:"ham"+i,country:"UK"})
for(var i=1;i<10;i++) db.customers.insert({name:"brown"+i,country:"UK"})
for(var i=1; i<10; i++)  db.customers.insert({name:"ramda"+i, country:"Malaysia"})

注:删除上一章添加的customers数据

3.3.3 创建单字段唯一索引

  • db.customers.createIndex({name:1},{unique:true})

  • 索引创建成功后可通过如下语句查询增加的索引: db.customers.getIndexes()

v表示索引的版本; key表示索引建立在哪个字段上; 1表示索引按照升序排列; ns索引所在的命名空间

效果如图

显示单字段索引

显示单字段索引

  • 索引查询效率分析

db.customers.find({name:"ramda9"}).explain("executionStats") //使用索引字段作为查询选择器 db.customers.find({country:"Malaysia"}).explain("executionStats") //不使用索引字段作为查询选择器

使用索引:

使用索引

使用索引

不使用索引:

不使用索引

不使用索引

totalKeysExamined:遍历索引的次数 totalDocsExamined:遍历文档的次数 executionTimeMillis:预测需要执行的时间