- 文档首页
文档数据库 MongoDB 版
常见问题
报错和异常
为什么有时实例并没有选择最优索引?
为什么有时实例并没有选择最优索引?
问题现象
MongoDB 实例的 PlanCache 中存在最高效的查询索引,但在执行查询时并未选择该最优索引,导致扫描行数过多,出现大量慢查询,占用大量 CPU 内存资源,影响数据库性能。
受影响的实例
MongoDB 4.0 实例。
原因
处理方法
- 通过 PlanCache.clear() 命令清除实例的查询缓存。关于 PlanCache.clear() 命令的更多详情,请参见 PlanCache.clear()。
- 您可以根据实际业务的查询需求进行具体分析和改进,确保设置了最适合的查询策略。如下具体改进方法供您参考:
- 通过 cursor.hint() 命令对常用查询显式指定 hint 来选择该查询的最优执行计划。关于 cursor.hint() 命令的更多详情,请参见 cursor.hint()。
- 通过 planCacheSetFilter 参数设置查询计划缓存索引过滤器,直接为常用查询选择最优查询计划来覆盖默认查询计划。关于 planCacheSetFilter 的更多详情,请参见 planCacheSetFilter。
最近更新时间:2026.01.04 20:19:28