図は,DBMSが受け付けたクエリを実行するまでの処理の流れを表している。
①~③に入る処理の組合せとして,適切なものはどれか。
クエリ → ① → ② → ③ → 実行
正答4
解説
正解は4です。
DBMSは、受け付けたSQL文(クエリ)をそのまま実行するのではなく、いくつかの段階を経て実行可能な形に変換します。
その順序は、プログラム言語のコンパイルとよく似ています。
【処理の流れ】
最初の構文解析で、SQL文が文法的に正しいかを調べ、内部の表現に変換します。
次の最適化で、索引の使い方や結合の順序などを検討し、最も効率のよい実行計画を決めます。
最後のコード生成で、決めた実行計画をもとに実行可能なコードを作ります。
【選択肢別解説】
1:× コード生成を最初に行っています。
文法を確認していないSQL文からはコードを生成できません。
2:× コード生成を最初、構文解析を最後に行っており、順序が逆です。
3:× 構文解析は正しい位置ですが、最適化の前にコード生成を行っています。
コードは、最適化で決めた実行計画をもとに生成します。
4:○ 構文解析、最適化、コード生成の順で処理し、最後に実行します。
【ポイント】
最適化を担う機能はオプティマイザと呼ばれます。
同じ結果を返すSQL文でも、実行計画によって処理時間が大きく変わります。