MongoDB:explain执行计划

MongoDB:explain执行计划

一、基本语法

> db.user.find().explain()

查看结果

{
	"explainVersion" : "1",
	"queryPlanner" : {
		"namespace" : "test.user",
		"indexFilterSet" : false,
		"parsedQuery" : {
			
		},
		"queryHash" : "8B3D4AB8",
		"planCacheKey" : "D542626C",
		"maxIndexedOrSolutionsReached" : false,
		"maxIndexedAndSolutionsReached" : false,
		"maxScansToExplodeReached" : false,
		"winningPlan" : {
			"stage" : "COLLSCAN",
			"direction" : "forward"
		},
		"rejectedPlans" : [ ]
	},
	"command" : {
		"find" : "user",
		"filter" : {
			
		},
		"$db" : "test"
	},
	"serverInfo" : {
		"host" : "eff44688aa5e",
		"port" : 27017,
		"version" : "5.0.6",
		"gitVersion" : "212a8dbb47f07427dae194a9c75baec1d81d9259"
	},
	"serverParameters" : {
		"internalQueryFacetBufferSizeBytes" : 104857600,
		"internalQueryFacetMaxOutputDocSizeBytes" : 104857600,
		"internalLookupStageIntermediateDocumentMaxSizeBytes" : 104857600,
		"internalDocumentSourceGroupMaxMemoryBytes" : 104857600,
		"internalQueryMaxBlockingSortMemoryUsageBytes" : 104857600,
		"internalQueryProhibitBlockingMergeOnMongoS" : 0,
		"internalQueryMaxAddToSetBytes" : 104857600,
		"internalDocumentSourceSetWindowFieldsMaxMemoryBytes" : 104857600
	},
	"ok" : 1
}

参数含义:

参数含义
explainVersion查询计划版本
namespace要查询的集合
indexFilterSet是否使用索引
parsedQuery查询条件
winningPlan最佳执行计划
stage查询方式,常见的有COLLSCAN/全表扫描、IXSCAN/索引扫描、FETCH/根据索引去检索文档、SHARD_MERGE/合并分片结果、IDHACK/针对_id进行查询
filter过滤条件
direction搜索方向
rejectedPlans拒绝的执行计划
serverInfoMongoDB服务器信息

二、基本用法

  • explain.queryPlanner.namespace:该值返回的是该query所查询的表

  • explain.queryPlanner.indexFilterSet:针对该query是否有indexfilter

  • explain.queryPlanner.winningPlan:查询优化器针对该query所返回的最优执行计划的详细内容。

  • explain.queryPlanner.winningPlan.stage:最优执行计划的stage,这里返回是FETCH,可以理解为通过返回的index位置去检索具体的文档

  • Explain.queryPlanner.winningPlan.inputStage:用来描述子stage,并且为其父stage提供文档和索引关键字。

  • explain.queryPlanner.winningPlan.stage的child stage,此处是IXSCAN,表示进行的是index scanning。

  • explain.queryPlanner.winningPlan.keyPattern:所扫描的index内容,此处是did:1,status:1,modify_time: -1与scid : 1

  • explain.queryPlanner.winningPlan.indexName:winning plan所选用的index。

  • explain.queryPlanner.winningPlan.isMultiKey是否是Multikey,此处返回是false,如果索引建立在array上,此处将是true。

  • explain.queryPlanner.winningPlan.direction:此query的查询顺序,此处是forward,如果用了.sort({modify_time:-1})将显示backward。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值