MongoDB权威指南学习笔记5---索引相关的知识点

1 查看查询计划

db.user.find({"username":"xxx"}) .explain()

db.doc.find({"es_y":"2014"}).explain()
{
 "cursor" : "BasicCursor",
 "isMultiKey" : false,
 "n" : 0,
 "nscannedObjects" : 1,
 "nscanned" : 1,
 "nscannedObjectsAllPlans" : 1,
 "nscannedAllPlans" : 1,
 "scanAndOrder" : false,
 "indexOnly" : false,
 "nYields" : 0,
 "nChunkSkips" : 0,
 "millis" : 0,
 "server" : "idc254:27017",
 "filterSet" : false
}

--------

indexOnly---表明是否只用索引就可以返回所需的字段,而不是二次根据地址取文档!

cursor表明是否用了索引

nscanned是mongodb完成这个查询扫描的文档总数。

millis显示的是这个查询耗费的毫秒数。

n显示了查询结果的数量。

scanAndOrder---表明是否需要在内存中排序!

2 建立索引

db.user.ensureIndex({"username":1})

3 查询某个集合的所有索引

db.doc.getIndexes()

4 查看当前服务器的操作

db.currentOp()

{
 "inprog" : [
  {
   "opid" : 486,
   "active" : true,
   "secs_running" : 2,
   "op" : "getmore",
   "ns" : "local.oplog.rs",
   "query" : {
    
   },
   "client" : "192.168.56.66:37299",
   "desc" : "conn2",
   "threadId" : "0x7f1e191d7700",
   "connectionId" : 2,
   "waitingForLock" : false,
   "numYields" : 0,
   "lockStats" : {
    "timeLockedMicros" : {
     "r" : NumberLong(89),
     "w" : NumberLong(0)
    },
    "timeAcquiringMicros" : {
     "r" : NumberLong(15),
     "w" : NumberLong(0)
    }
   }
  }
 ]
}

 5 关于索引

对于写操作时间慢,一个集合最多64个索引,通常不要超过2个以上的索引个数!

6 创建复合索引

db.user.ensureIndex({"key1":1,"key2":1})

7 内存排序

如果需要在内存中排序,且超过32MB.

就会报错!

8 强制指定索引进行查询

.hint({索引。。。})

9覆盖索引

简单来说,就是索引的字段已经可以满足需求,不需要再二次根据地址取文档!

10隐式索引

比如说 {"age":1,"username":1}可以当做{"age":1}来使用!

MongoDB权威指南学习笔记5---索引相关的知识点,古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。