PlanCache.listQueryShapes()

在本页面

Definition

  • PlanCache. listQueryShapes ( )

查询优化器仅缓存那些具有多个可行计划的查询形状的计划。

该方法仅可从特定集合的计划缓存对象获得;即

db.collection.getPlanCache().listQueryShapes()
Returns:query shape个文档的数组。

该方法包装planCacheListQueryShapes命令。

Required Access

在运行authorization的系统上,用户必须具有包括planCacheRead操作的访问权限。

Example

以下内容返回已缓存orders集合计划的query shapes

db.orders.getPlanCache().listQueryShapes()

该方法返回当前在缓存中的查询形状的数组。在示例中,orders集合已缓存与以下形状关联的查询计划:

[
  {
    "query" : { "qty" : { "$gt" : 10 } },
    "sort" : { "ord_date" : 1 },
    "projection" : { }
  },
  {
    "query" : { "$or" :
       [
         { "qty" : { "$gt" : 15 }, "item" : "xyz123" },
         { "status" : "A" }
       ]
    },
    "sort" : { },
    "projection" : { }
  },
  {
    "query" : { "$or" : [ { "qty" : { "$gt" : 15 } }, { "status" : "A" } ] },
    "sort" : { },
    "projection" : { }
  }
]

Note

并非所有查询都会自动将查询计划放入缓存中。如果当前没有带有缓存查询计划的查询形状,则db.collection.getPlanCache().listQueryShapes()返回一个空数组。