# SQL文の解析とコンパイル: `Compiler`

![`smart`](CompilingProcess_en_002_20220509.png)

------------------------------------------------------------
SQL文が解析された後、AST構文木が生成され、`Compiler`モジュールに渡されます。`Compiler`モジュールは以下のタスクを実行します：

- 意味チェックと名前バインディング。

- TiDB の論理最適化を実行します。TiDB の論理最適化ルールには、カラム削減、最大値・最小値除去、投影除去、述語プッシュダウン、サブクエリの非相関化、外部結合の除去、集計の除去などが含まれます。詳細は、クエリ最適化の節で説明します。

- 物理最適化を実行します。物理最適化は、論理最適化の出力を基にして、データの分布を考慮して、どのような物理オペレーターを選択するかを決定します。最適な実行パスを選択するプロセスは、統計に依存します。物理最適化には、結合方法、テーブル結合順序、ソートなどの技術が主に含まれます。詳細は、クエリ最適化のセクションに記載されています。さらに、物理最適化にはテーブルのメタデータ（セマンティックチェックにも必要なメタデータ情報）と統計を照会する必要があり、テーブルのメタデータと統計は、TiDBサーバーのキャッシュに格納することでパフォーマンスを向上させることができます。