以前、SQL Server のクエリオプティマイザを学習する際に確認するドキュメント という投稿を書きました。
SQL Server のクエリオプティマイザを学習するためには、上記の投稿で触れている技術情報に加えて、SQL Server ディスク ベース テーブルに対するクエリ処理 の以下の図を意識する必要があります。
SQL Server のクエリ実行時の実行プランの生成については、
- Parser による構文解析
- Algebrizer によるオブジェクトのバインドと論理操作の出力
- クエリオプティマイザによる物理操作の選択
- クエリ実行
というような流れとなります。
「2.」の Algebrizer が論理操作 (論理ツリー) を出力する部分については、公開されている情報が少ないのですが、「3.」のクエリオプティマイザの動作については、様々な情報が公開されています。
本投稿ではどのような情報が公開されているのかについてまとめておきたいと思います。