EXPLAIN 命令产品文档

概述

EXPLAIN是ClickZetta Lakehouse中用于分析SQL查询执行计划的诊断命令。通过查看执行计划,用户可以理解查询的执行流程、识别性能瓶颈并进行针对性的查询优化。该命令支持基础和扩展两种输出模式。

命令语法

EXPLAIN [EXTENDED] query_statement

执行计划模式

1. 基础执行计划模式(EXPLAIN)

基础模式显示查询的物理执行计划,用于快速理解查询的执行方式。

特点

  • 轻量级输出:显示物理执行的核心步骤
  • 快速诊断:用于快速识别查询的执行方式
  • 包含内容:物理表扫描、表数据输出、操作符名称和阶段信息

语法

EXPLAIN query_statement

示例

EXPLAIN SELECT * FROM a_decimal LIMIT 5

验证结果(实际输出):

Type: DMLPlan: PhysicalTableSink() name=TableSink0 stage=stg0  PhysicalTableScan(a_decimal, a) as [0] name=TableScan1

2. 扩展执行计划模式(EXPLAIN EXTENDED)

扩展模式显示完整的逻辑执行计划和物理执行计划,包含更多的优化细节信息。

特点

  • 完整输出:包含逻辑计划和物理计划两个层面

  • 详细分析:显示表达式转换、系统列、优化过程等

  • 包含内容

    • 逻辑执行计划(LogicalPlan)
    • 物理执行计划(DML)
    • 系统隐藏列信息
    • 表达式类型转换

语法

EXPLAIN EXTENDED query_statement

验证示例

以下命令已通过ClickZetta MCP Server验证:

EXPLAIN EXTENDED SELECT * FROM a_decimal LIMIT 5

验证结果(实际输出):

[LogicalPlan]Type: LogicalPlanPlan: TableSink()  LogicalSort(_TRY_TO_INT64(5))    LogicalCalc($0 as 0) as [0]      TableScan(a_decimal, a, ORIGINAL__SLICE__ID, ORIGINAL__ROW__OFFSET,        row_offset_in_file, __incremental_deleted, __commit_version,        __change_type, __commit_timestamp, INPUT__FILE__NAME,        FILE__SLICE__ID, __data_source_id, __snapshot_id) as [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11][PhysicalPlan]Type: DMLPlan: PhysicalTableSink() name=TableSink0 stage=stg0  PhysicalTableScan(a_decimal, a) as [0] name=TableScan1

执行计划中的常见操作符

操作符说明性能特征
PhysicalTableScan从表读取数据基础I/O操作
PhysicalTableSink输出查询结果固定开销
PhysicalSort对数据排序O(n log n),可能成为瓶颈
PhysicalFilter条件过滤线性操作,早期过滤是最佳实践
PhysicalHashAggregate聚合操作根据GROUP BY基数变化
PhysicalJoinJOIN操作复杂度取决于JOIN策略和数据量

联系我们
预约咨询
微信咨询
电话咨询