您的位置:首页 > 大数据 > 人工智能

MongoDB查询分析常用函数explain()

2017-09-10 21:42 381 查看
MongoDB 查询分析可以确保我们建议的索引是否有效,是查询语句性能分析的重要工具

explain 操作提供了查询信息,使用索引及查询统计等。有利于我们对索引的优化。

db.collection.explain()简介

支持下列操作返回查询计划

aggregate(), count() ,distinct(),find(),group(), remove(),update() 等

执行计划中几类常见的操作描述
COLLSCAN 全表扫描
IXSCAN 索引扫描
FETCH 根据索引去检索文档
SHARD_MERGE 合并分片结果


接下来我们在 user 集合中创建 一个age 的索引:



使用 db.user.find({age:26}).explain()操作,返回的结果如下:

db.user.find({age:26}).explain()
{
"queryPlanner" : {
"plannerVersion" : 1,   //查询计划版本
"namespace" : "demo.user",   //被查询对象
"indexFilterSet" : false,   //是否使用到了索引来过滤
"parsedQuery" : {   //解析查询,即过滤条件是什么
"age" : {
"$eq" : 26  //此处为age=26
}
},
"winningPlan" : {    //最佳的执行计划
"stage" : "FETCH",
"inputStage" : {
"stage" : "IXSCAN",
"keyPattern" : {
"age" : 1
},
"indexName" : "age_1",
"isMultiKey" : false,
"multiKeyPaths" : {
"age" : [ ]
},
"isUnique" : false,
"isSparse" : false,
"isPartial" : false,
"indexVersion" : 2,
"direction" : "forward",
"indexBounds" : {
"age" : [
"[26.0, 26.0]"
]
}
}
},
"rejectedPlans" : [ ]   //拒绝的执行计划,此处没有
},
"serverInfo" : {    //服务器信息,包括主机名,端口,版本等。
"host" : "DESKTOP-4921JJC",
"port" : 27017,
"version" : "3.4.7",
"gitVersion" : "
989b
cf38c1b8a0a8dca4a11737581beafef4fe120bcd"
},
"ok" : 1
}


需要注意的是,大部分资料会给出类似如下信息输出(下面并不是执行db.user.find({age:26}).explain()操作返回的信息):



这是应该MongoDB中的explain()方法在3.2版本之后进行了一些方法和支持的变动

老版本、大部分资料:db.collection.method().explain()
当前的API:db.collection.explain().method()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: