Expand description
§sz-orm-explain — 跨方言 EXPLAIN 结果解析器
将 MySQL / PostgreSQL / SQLite / Oracle / MSSQL 的 EXPLAIN 输出解析为
统一的 ExplainPlan,用于:
- 全表扫描检测(
ScanType::FullTable) - 缺失索引检测(
index == None且扫描行数超阈值) - 执行计划回归检测([
crate::regression],需explain-analyzerfeature)
典型用法(配合 sz-orm-macros 的 query! 宏 db-verify 模式):
ⓘ
let plan = sz_orm_explain::parser_for(ExplainDialect::Postgres)?.parse(explain_raw)?;
if plan.scan_type == ScanType::FullTable {
// 编译期/CI 警告:全表扫描
}解析失败返回 ExplainError::Unparseable,不 panic,可降级为“无警告“。
注意:本包刻意零依赖 sz-orm-core,通过自带的 ExplainDialect 枚举
描述方言,避免 core → macros → explain → core 依赖循环。
Modules§
Structs§
- Explain
Plan - 解析后的执行计划摘要
Enums§
- Explain
Dialect - 支持的 EXPLAIN 解析方言(与数据库引擎对应,家族内格式兼容)
- Explain
Error - EXPLAIN 解析错误
- Scan
Type - 扫描类型分类(各方言扫描方式的统一抽象)
Traits§
- Explain
Parser - 方言 EXPLAIN 解析器 trait
Functions§
- parse_
explain - 便捷解析函数:按方言解析 EXPLAIN 输出
- parser_
for - 按方言分派解析器