Skip to main content

Crate sz_orm_explain

Crate sz_orm_explain 

Source
Expand description

§sz-orm-explain — 跨方言 EXPLAIN 结果解析器

将 MySQL / PostgreSQL / SQLite / Oracle / MSSQL 的 EXPLAIN 输出解析为 统一的 ExplainPlan,用于:

  • 全表扫描检测(ScanType::FullTable)
  • 缺失索引检测(index == None 且扫描行数超阈值)
  • 执行计划回归检测([crate::regression],需 explain-analyzer feature)

典型用法(配合 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§

dialect
方言分派辅助
parsers
各方言 EXPLAIN 解析器

Structs§

ExplainPlan
解析后的执行计划摘要

Enums§

ExplainDialect
支持的 EXPLAIN 解析方言(与数据库引擎对应,家族内格式兼容)
ExplainError
EXPLAIN 解析错误
ScanType
扫描类型分类(各方言扫描方式的统一抽象)

Traits§

ExplainParser
方言 EXPLAIN 解析器 trait

Functions§

parser_for
按方言分派解析器