Mongodb索引的使用

746 阅读1分钟

1.分析查询性能db.collectionName.find(query.options).explain(options)

首先测试不给colletion加任何索引得到的结果

db.comment.find({userid:"1003"}).explain()

执行查询计划其中winningPlan为COLLSCAN即collection scan集合扫描


效果不是很明显,可以通过图形界面管理器compass来执行explain语句进行效果分析

首先要开启compass->collection(comment)->Explain Plan->输入{"userid:"1003"}->按钮EXPLAIN可以得到结果Documents Examined :4也就是和comment集合总数据条数一致,代表我们没有用上索引,没有性能提升的作用。


接着准备给commnet添加一个userid为升序的索引

db.comment.createIndex({userid:1})


接着再去查询下索引情况

db.comment.find({userid:1}).explain()

可以看到查询计划中的winningPlan  -->indexBounds->userid

queryPlanner->winningPlain->state变成了fetch抓取数据了


再去执行compass中的执行一条查询语句explain看下效果

此时在建立了userid为索引的情况下去查询一条语句,得到的是1而不是4,性能在建立了索引后得到很大的提升,由于先执行的是IXSCAN查询到1条然后再去FETCH


2.涵盖的查询

即查询字段恰好包含在索引字段

Query covered by index