05-MogoDB执行计划

执行计划

MongoDB 查询分析可以确保我们建议的索引是否有效,是查询语句性能分析的重要工具

shell 复制代码
#插入1000条数据
for(var i=1;i<1000;i++)db.user.insert({id:100+i,username:'name_'+i,age:10+i})
shell 复制代码
#查看执行计划
> db.user.find({age:{$gt:100},id:{$lt:200}}).explain()
{
	"queryPlanner" : {
		"plannerVersion" : 1,
		"namespace" : "testdb.user",
		"indexFilterSet" : false,
		"parsedQuery" : {
			"$and" : [
				{
					"id" : {
						"$lt" : 200
                     }
				},
				{
        			"age" : {
       					"$gt" : 100
        			}
        		}
        	]
        },
		"winningPlan" : { #最佳执行计划
			"stage" : "FETCH", #查询方式,常见的有COLLSCAN/全表扫描、IXSCAN/索引扫描、FETCH/根据索引去检索文档、SHARD_MERGE/合并分片结果、IDHACK/针对_id进行查询
        	"inputStage" : {
        		"stage" : "IXSCAN",
        		"keyPattern" : {
                    "age" : 1,
                    "id" : -1
        		},
                "indexName" : "age_1_id_-1",
                "isMultiKey" : false,
                "multiKeyPaths" : {
                    "age" : [ ],
                    "id" : [ ]
                },
                "isUnique" : false,
                "isSparse" : false,
                "isPartial" : false,
                "indexVersion" : 2,
                "direction" : "forward",
                "indexBounds" : {
                "age" : [
                    "(100.0, inf.0]"
                    ],
                    "id" : [
                    "(200.0, -inf.0]"
            		]
            	}
            }
        },
		"rejectedPlans" : [ ]
	},
	"serverInfo" : {
        "host" : "c493d5ff750a",
        "port" : 27017,
        "version" : "4.0.3",
		"gitVersion" : "7ea530946fa7880364d88c8d8b6026bbc9ffa48c"
	},
	"ok" : 1
}
shell 复制代码
#测试没有使用索引
> db.user.find({username:'zhangsan'}).explain()
{
    "queryPlanner" : {
        "plannerVersion" : 1,
        "namespace" : "testdb.user",
        "indexFilterSet" : false,
        "parsedQuery" : {
        	"username" : {
        		"$eq" : "zhangsan"
				}
			},
			"winningPlan" : {
            	"stage" : "COLLSCAN", #全表扫描
            	"filter" : {
            		"username" : {
            			"$eq" : "zhangsan"
					}
				},
				"direction" : "forward"
			},
			"rejectedPlans" : [ ]
	},
	"serverInfo" : {
		"host" : "c493d5ff750a",
        "port" : 27017,
        "version" : "4.0.3",
		"gitVersion" : "7ea530946fa7880364d88c8d8b6026bbc9ffa48c"
	},
	"ok" : 1
}
相关推荐
djarmy3 小时前
MAIN.c(1): warning C318: can’t open file ‘STC8G.H’ 报错 解决 分析
c语言·开发语言·mongodb
子非鱼a3 小时前
【WEB】multiSQL
前端
lemon_sjdk4 小时前
DOM 节点
java·前端·javascript
nvd114 小时前
深入现代 Web 鉴权架构:网关统一代理 (Forward-Auth) vs 前端持有 JWT 的终极选型与边缘同域实践
前端·架构·状态模式
leoZ2315 小时前
2026-09-09-springboot-cloud-deploy-pitfalls
java·前端·javascript·vue.js·人工智能·spring boot·后端
YWL5 小时前
OpenLayers弹窗Overlay深度实战
前端·vue·openlayers
YWL5 小时前
OpenLayers+ECharts联动:地图点击联动图表,数据可视化大屏方案
前端·信息可视化·vue·echarts·openlayers
芭拉拉小魔仙5 小时前
Vue 2 门诊收费系统中的医保结算流程设计与实践
前端·javascript·vue.js
moonrailgun5 小时前
用 Node.js 复刻 Codex Astra 的终端星光
前端·javascript·算法
海上彼尚6 小时前
Cursor 模型的强度实测排行
前端·人工智能·后端