加载中...

查询优化器(Query Optimizer)是关系数据库的核心组件,输入经过解析的 SQL 逻辑表示,输出估计代价最低(或满足规则)的物理执行计划,决定访问路径(全表扫描还是索引)、连接算法、连接顺序、聚合与排序方式等。
典型流程为:SQL 解析生成语法树,语义分析后转为逻辑计划(关系代数表达式);优化器先做逻辑改写(谓词下推、子查询展开、常量折叠等),再进行物理优化,枚举候选计划并利用统计信息估算代价,最终选出执行计划交给执行器。
按决策依据分为基于规则的优化器(RBO)与基于代价的优化器(CBO),现代数据库以 CBO 为主流;按架构分为 System R 式的自底向上动态规划优化器,与 Volcano/Cascades 式的自顶向下变换式优化器。
同一条 SQL 的不同执行计划性能可能相差多个数量级,优化器质量直接决定数据库的实际性能,也是各数据库厂商长期投入的核心竞争力。

登录 后参与讨论
暂无讨论,来发表第一条评论吧