开发者学堂课程【MongoDB精讲课程(上):索引的使用 执行计划】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/726/detail/12963
索引的使用 执行计划
内容介绍
一、执行计划
一、执行计划
分析查询性能( Analyze Query Performance )通常使用执行计划(解释计划、Explain Plan )来查看查询的情况,如查询耗费的时间、是否基于索引查询等。
通常了解建立的索引是否有效、效果如何,需要通过执行计划查看。
语法:
db .collection. find ( query , options ). explain ( options )
/ options 一般情况下使用默认即可。
例如:
查询 userid:”1003” 是否用到索引
db.comment.find({userid:
”1003”}).explain()
此时返回的不是数据,而是执行计划返回的信息。如 queryPlanner 查询的信息,包括查询语句、计划的版本等。重点在于 winningPlan ,即赢计划, COLL 代表 collection,也就是集合, SCAN 是扫描,现在用到的是集合扫描,也就是代表现在并没有用到索引,目前是全局扫描。这里可以用 compass 来看更明显,找到 Explain Plan ,写一个查询userid ,执行计划后发现也没有用到索引。此时加上索引:
db.comment.createIndex({userid:1})
winningPlan 变为 FETCH ,不再是全局扫描。通过 IXSCAN 查询索引的集合,再通过 FETCH 进行查询,再次使用索引查询时就不用通过全集合扫描,而用的是索引。
如果数据较大,索引加后面的毫秒可以了解查询的速度是否提升。