首页 > 解决方案 > MongoDB - 解释.executionStats

问题描述

MongoDB 的 explain("executionStats") 的输出中是否有任何元素给出了一个想法或提示 - 查询是使用给定的索引进行过滤或排序还是两者兼而有之?

我阅读了以下网址

用于BIG集合过滤和排序的mongodb复合索引[指向下面的URL并简要讨论]

https://emptysqua.re/blog/optimizing-mongodb-compound-indexes/ [这个给出了一般的想法,但是解释输出使用了我正在使用的 Mongodb 4.0 中不存在的旧格式/元素]

https://docs.mongodb.com/manual/tutorial/sort-results-with-indexes/ [记录如何确定索引和利用索引前缀,但确实显示了确认使用的解释输出]

标签: mongodbexplain

解决方案


来自 MongoDB文档

如果 MongoDB 可以使用索引扫描来获取请求的排序顺序,则结果将不包括 SORT 阶段。否则,如果 MongoDB 无法使用索引进行排序,则说明结果将包含 SORT 阶段。

例子:

查看 sortop 集合中的示例数据。 在此处输入图像描述

解释没有索引的查询的计划: 在此处输入图像描述

在集合上创建索引:

在此处输入图像描述

运行相同的查询并检查解释计划中的 SORT 阶段: 在此处输入图像描述


推荐阅读