查询编译
查询处理
查询处理
- 查询编译
- 查询执行
查询编译
查询编译
- 查询分析
- 词法分析
- 语法分析
- 语义分析
- 查询重写
- 查询优化/规划
- 预处理
- 生成路径
- 生成计划
| 处理步骤 | 输入 | 处理 | 输出 |
|---|---|---|---|
| 查询处理 | SQL字符串 | 编译、执行 | 数据库上的操作序列并执行 |
| 查询编译 | SQL字符串 | 分析、重写、优化 | 最优执行计划 |
| 查询分析 | SQL字符串 | 词法、语法、语义 | Query查询树 |
| 词法分析 | SQL字符串 | 词法分析工具Lex,正则表达式 | 词法分析树 |
| 语法分析 | 词法分析树 | 语法分析工具Yacc,寻找语法结构 | 语法分析树 |
| 语义分析 | 分析树 | 检查命令是否能正确执行 | Query查询树链表 |
| 查询重写 | 复杂命令 | 规则系统 | 新的查询树 |
| 查询优化 | 重写后的查询树 | 预处理、生成路径、成计划 | 优化后的执行计划 |
| 预处理 | 重写后的查询树 | 提升自链接、提升子查询 | 改造后的查询树 |
| 生成路径 | 改造后的查询树 | 动态规划、遗传算法 | 最优路径 |
| 生成计划 | 最优路径 | 基本计划、完整计划 | 最终计划 |