使用查询解释分析查询执行

本页介绍了如何在执行查询时检索查询执行信息。

使用查询解释

您可以使用“查询解释”功能了解查询的执行方式。其中提供了一些详细信息,可供您优化查询。googledata/devsite/site-cloud/zh-CN/firestore/mongodb-compatibility/quotas.mds 目前,只有 Google Cloud 控制台支持查询说明。

如需使用“查询解释”功能,请在查询编辑器中执行查询,然后打开说明标签页:

控制台
  1. 在 Google Cloud 控制台中,转到数据库页面。

    前往“数据库”

  2. 从数据库列表中,选择一个具有 MongoDB 兼容性的 Firestore 数据库。 Google Cloud 控制台会打开该数据库的 Firestore 浏览器
  3. 在查询编辑器中输入查询,然后点击运行
  4. 点击说明标签页可查看查询分析输出。

    控制台中的“Query Explain”标签页

分析

查询说明的输出包含两个主要组成部分:摘要统计信息和执行树。请考虑以下查询示例:

db.order.aggregate(
 [
   { "$match": { "user_id": 1234 } },
   { "$sort": { "date_placed": 1 } }
 ]
)

摘要统计信息

解释输出的顶部包含执行统计信息摘要。您可以使用这些统计信息来确定查询是否存在高延迟或高费用问题。它还包含内存统计信息,可让您了解查询与内存限制的接近程度。

Billing Metrics:
read units: 1

Execution Metrics:
request peak memory usage: 4.00 KiB (4,096 B)
results returned: 1

执行树

执行树将查询执行描述为一系列节点。底部节点(叶节点)会从存储层检索数据,该层会向上遍历树以生成查询响应。

如需详细了解每个执行节点,请参阅执行参考文档

如需详细了解如何使用这些信息优化查询,请参阅优化查询执行

以下是执行树的示例:

• Drop
|  fields to drop: [__$3__]
|  records returned: 0
|
└── • MajorSort
    |  fields: [__$3__ ASC]
    |  peak memory usage: 4.00 KiB (4,096 B)
    |  records returned: 0
    |
    └── • Extend
        |  expressions: [date_placed AS __$3__]
        |  records returned: 0
        |
        └── • Drop
            |  fields to drop: [__key__]
            |  records returned: 0
            |
            └── • Extend
                |  expressions: [_id(__key__) AS __id__]
                |  records returned: 0
                |
                └── • Filter
                    |  expression: $eq(user, 1,234)
                    |  records returned: 0
                    |
                    └── • TableScan
                           order: UNDEFINED
                           properties: * - { __create_time__, __update_time__ }
                           records returned: 0
                           records scanned: 0
                           source: (default)#/**/collection

后续步骤