# 解析和编译SQL语句：`Compiler`

![`smart`](CompilingProcess_en_002_20220509.png)

------------------------------------------------------------
经过SQL语句解析后，会生成AST语法树，并传递给`Compiler`模块，`Compiler`模块会执行以下任务：

- 语义检查和名称绑定。

- TiDB的逻辑优化主要包括列修剪、最大最小消除、投影消除、谓词推下、子查询去相关、外连接消除、聚合消除等逻辑优化规则，更多细节可参见查询优化章节。

- 执行物理优化。物理优化是基于逻辑优化输出，考虑数据的分布情况，决定如何选择物理操作符。选择最优的执行路径，这个过程取决于统计信息。物理优化主要包括连接方法、表连接顺序和排序等技术。更多细节可以在查询优化部分查看。此外，物理优化还需要查询表的元数据（元数据信息也是语义检查所必需的）和统计信息，表的元数据和统计信息可以存储在 TiDB 服务器的缓存中，以提高性能。