【データベースの知識】SQLが実行されるまでの内部ステップ
私たちがSQLを1行実行したとき、データベースの内部では瞬時にいくつかの工程が実行されています。この「実行ステップ」を知ることで、なぜ同じ結果を返すクエリでも速度が変わるのか、その理由が見えてきます。
1. SQL実行の4つの主要ステップ
【 基本 】 送信されたSQL文は、データベースエンジンによって以下の順序で処理されます。特に「実行計画」の作成は、クエリの成否を分ける心臓部です。
★ 1. 構文解析(Parsing):SQLの文法に誤りがないかチェックし、意味を解析します。
★ 2. 実行計画の作成(Optimization):インデックスを使うか、どの結合法を選ぶかなど、最も効率的なルートを計画します。
★ 3. コンパイル:作成された計画を、データベースが実行可能な形式に変換します。
★ 4. SQLの実行:実際にデータへアクセスし、結果を返します。
2. 各フェーズで何が行われているか
各ステップの詳細を見てみましょう。エンジニアが意識すべきは、特に「2」のプロセスです。
★ オプティマイザの判断:統計情報を元に「実行計画(実行の設計図)」を作ります。ここでの判断ミスがスロークエリの原因になります。
★ キャッシュの活用:一度解析したSQLは「共有プール」に保存され、2回目以降はステップ1〜3を省略して高速化(ソフトパース)される仕組みがあります。
3. まとめ:実行ステップを意識するメリット
「なぜバインド変数を使うべきなのか」「なぜ統計情報の更新が必要なのか」といった疑問の答えは、すべてこの実行ステップの中にあります。
・バインド変数を使うことで、再解析(ハードパース)のコストを減らせる。
・最新の統計情報を保つことで、最適な実行計画を立てさせることができる。
・複雑なクエリは、実行計画を確認(EXPLAIN)してボトルネックを特定する。
SQLをただの「命令文」としてではなく、DB内部の「プロセス」として捉えることが、脱・初心者への近道です。