Lakehouse 执行计划分析指南(EXPLAIN)
概述
在 SQL 查询性能优化中,理解查询的执行计划是第一步。云器 Lakehouse 提供
EXPLAIN 命令,展示查询的逻辑和物理执行计划,帮助你识别全表扫描、低效 JOIN 和未命中索引等问题。本指南按业务场景分类,帮助你快速掌握执行计划的查看与分析方法。
涉及的 SQL 命令
| 命令 | 用途 | 适用场景 |
|---|---|---|
| 查看逻辑执行计划 | 快速检查查询结构 |
前置准备
以下示例使用模拟的订单表
orders_explain:
查看执行计划
使用
EXPLAIN 查看查询的执行计划,了解查询将被如何分解和执行。
输出说明:
:表扫描,读取底层数据。PhysicalTableScan
:行过滤,应用Filter
条件。WHERE
:列裁剪,只读取需要的列。Project
识别全表扫描
当查询未使用分区列或索引过滤时,执行计划会显示全表扫描(
TableScan 无过滤条件)。
优化建议:
- 如果
是分区列,在order_date
中加入WHERE
可触发分区裁剪。order_date >= '2024-06-01' - 对
列创建 Bloom Filter 索引可加速等值或范围过滤。amount
验证索引命中
创建索引后,使用
EXPLAIN 确认查询是否自动使用了索引。
输出变化:
- 优化后的计划中,
会附带TableScan
或BloomFilter
标记,表示跳过了不匹配的数据块。IndexScan
对比优化前后计划
在优化查询(如添加索引、调整 JOIN 顺序)后,对比执行计划的变化。
评估指标:
是否变为TableScan
或附带过滤条件。IndexScan
估算是否显著下降。Cost
预估扫描行数是否减少。Statistics
清理测试数据
完成执行计划验证后,建议清理测试表:
注意事项
- EXPLAIN 不执行查询:
仅生成执行计划,不会实际读取数据或修改表。EXPLAIN - 动态计划:执行计划由优化器根据当前统计信息生成,表数据变化后计划可能不同。
- EXTENDED 输出量大:复杂查询的
输出可能长达数百行,建议结合关键词搜索(如EXPLAIN EXTENDED
,Join
,Scan
)。Filter - JSON 格式:使用
可将计划输出为 JSON,便于程序化解析或可视化工具集成。EXPLAIN (FORMAT JSON)
相关文档
联系我们
