概述

使用 SdbQuery.explain() 可以查看查询的访问计划。

当 SdbQuery.explain() 的 Detail 选项为 true 时,将会展示详细的访问计划。在协调节点和数据节点上展示的详细访问计划略有不同。

协调节点上的详细访问计划

协调节点上的详细访问计划包括以下内容:

  1. 协调节点上的访问计划信息
  2. 涉及数据节点上的访问计划信息
  1. {
  2. { 协调节点的访问计划信息 },
  3. "PlanPath": {
  4. "Operator": "COORD-MERGE",
  5. { 协调节点查询上下文的访问计划信息 },
  6. "ChildOperators": [
  7. {
  8. { 数据节点的访问计划信息 },
  9. ...
  10. },
  11. ...
  12. ]
  13. }
  14. }

详细请参考:协调节点的访问计划

数据节点上的详细访问计划

数据节点上的详细访问计划包括以下内容:

  1. 数据节点上的访问计划信息
  2. 访问计划的缓存使用情况
  3. 涉及的垂直分区中主子表的访问计划信息

主表的详细访问计划:

  1. {
  2. { 主表的访问计划信息 },
  3. "PlanPath": {
  4. "Operator": "MERGE",
  5. { 主表查询上下文的访问计划信息 },
  6. "ChildOperators": [
  7. {
  8. { 子表的访问计划信息 },
  9. ...
  10. },
  11. ...
  12. ]
  13. }
  14. }

详细请参考:主表的访问计划

普通集合或者子表的详细访问计划:

  1. {
  2. { 集合的访问计划信息 },
  3. "PlanPath": {
  4. { 查询上下文的访问计划信息 }
  5. ...
  6. }
  7. }

详细请参考:数据节点的访问计划

详细的访问计划中有以下操作:

  1. COORD-MERGE:对应一个协调节点上的查询上下文对象。
  2. MERGE:对应一个数据节点上的主表查询上下文对象。
  3. SORT:对应一个数据节点上的排序上下文对象。
  4. TBSCAN:对应一个数据节点上的全表扫描上下文对象。
  5. IXSCAN:对应一个数据节点上的索引扫描上下文对象。