学習ロードマップ

SQL パフォーマンスチューニング

SQL 基礎から設計アンチパターン・関係理論・高度なクエリ技法・DB 内部構造まで 5 冊で、遅いクエリを直せる地力を積み上げる。

SQL 第2版 ゼロからはじめるデータベース操作 SQLアンチパターン 第2版 : データベースプログラミングで陥りがちな失敗とその対策 理論から学ぶデータベース実践入門 : リレーションモデルによる効率的なSQL 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ 絵で見てわかるSQL Serverの仕組み
SCROLL TO BEGIN

このロードマップが扱うもの

- SELECT / JOIN - ORM SQL EXPLAIN - N+1

このロードマップの全体像

対象読者

  • SELECT / JOIN は書けるが、本番で遅いクエリに当たると手が止まるアプリケーションエンジニア
  • ORM 任せで SQL を書いてきて、EXPLAIN・インデックス・実行計画を体系的に学んでいない開発者
  • データ量が増えてから顕在化したスロークエリや N+1、集計処理の遅さを自力で直せるようになりたい中級者

5 冊で到達する状態

  • テーブル構造と JOIN・サブクエリ・ウィンドウ関数を、性能を意識して書き分けられる
  • 設計段階の典型的アンチパターン(EAV・ジェイウォーク・ランダム選択等)を検出し、リファクタできる
  • 関係モデルと正規化の観点から「なぜこの SQL が速い/遅いのか」を説明できる
  • 相関サブクエリ・CASE 式・集合演算を駆使して、手続き的ループに頼らない SQL に書き換えられる
  • ページ・インデックス・実行計画など DB エンジン内部の語彙で、ボトルネック仮説を組み立てられる

進め方のヒント

  • 1 冊目で文法とテーブル操作の地盤を固め、2 冊目は「自分のプロダクト DB に当てはまる章」から読むと投資対効果が高い
  • 3 冊目以降は、手元の遅いクエリを 1 本選び EXPLAIN を取りながら読むと、抽象論が実務に接続する
  • 5 冊目は SQL Server 題材だが、物理構造・インデックス・実行計画の考え方は他 RDBMS にも転用できる

ロードマップ

5 つのステップで読み進める

  1. 01
    ステップ 01 SQL とテーブル操作の基礎固め
    SQL 第2版 ゼロからはじめるデータベース操作
  2. 02
    ステップ 02 設計段階のアンチパターンを根絶
    SQLアンチパターン 第2版 : データベースプログラミングで陥りがちな失敗とその対策
  3. 03
    ステップ 03 リレーショナル理論で SQL を再解釈
    理論から学ぶデータベース実践入門 : リレーションモデルによる効率的なSQL
  4. 04
    ステップ 04 達人級クエリで書き換え力を獲得
    達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ
  5. 05
    ステップ 05 DB 内部構造から実行計画を読む
    絵で見てわかるSQL Serverの仕組み

第 1 章

SQL とテーブル操作の基礎固め

  1. SQL とテーブル操作の基礎固め

    チューニング前提となる SELECT・JOIN・集約・副問い合わせの語彙を通しで揃える土台本。ここで文法の迷いを消してから設計論に進む。

    SQL 第2版 ゼロからはじめるデータベース操作
    この章の 1 冊 SQL 第2版 ゼロからはじめるデータベース操作

    SQLをゼロから学び、アプリケーション連携まで体系的に習得する

    この本で身につくこと
    • SELECT 文の基本構文から WHERE・GROUP BY・HAVING・ORDER BY を組み合わせたデータ絞り込みと集計ができる
    • INNER JOIN / OUTER JOIN を使って複数テーブルを結合し、目的のデータセットを取り出せる
    • サブクエリを使った段階的なデータ抽出ロジックを自力で組み立てられる
    • ビュー・トランザクションの仕組みを理解し、安全なデータ操作の設計指針を持てる

    読み終えると Before(読む前): SQL をコピー&ペーストで動かしてきたが、GROUP BY や HAVING の使い分けを自分の言葉で説明できなかった After(読み終えた後): 集計・絞り込みの論理を体系的に理解し、要件から自力でクエリを組み立てられる

    想定読者: SQLに触れたことがない、または断片的な知識しかないプログラミング学習者・未経験からエンジニアへの転職を目指す人

    前提知識: プログラミングの基礎概念(変数・条件分岐・繰り返し)の理解があると比較例が理解しやすい。特定言語の習熟は不要 / Excel やスプレッドシートで表形式データを扱った経験があると、行・列・フィルタの概念との対応が直感的につかめる

    本の詳細を見る →
  2. 設計段階のアンチパターンを根絶

    遅い SQL の多くはテーブル設計に起因する。改訂版で増補された典型失敗と対策を押さえ、パフォーマンス劣化の元を設計段階で断つ。

    SQLアンチパターン 第2版 : データベースプログラミングで陥りがちな失敗とその対策
    この章の 1 冊 SQLアンチパターン 第2版 : データベースプログラミングで陥りがちな失敗とその対策

    RDBを使う開発者がやりがちな失敗を体系的に診断・改善する

    この本で身につくこと
    • Jaywalking(カンマ区切りリスト)やEAV(エンティティ・属性・値)など、一見合理的に見えるDB設計パターンが引き起こす問題を説明できる
    • ポリモーフィック関連・マルチカラム属性・メタデータトラブルなど論理設計層のアンチパターンを識別し、代替設計を提案できる
    • NULLの扱い・あいまいなGROUP BY・暗黙のカラム参照など、クエリ層の落とし穴を回避するSQL記述ができる
    • SQLインジェクションをはじめとするアプリケーション層のセキュリティリスクを、コード設計の観点で防止できる

    想定読者: SQLとRDB設計の基礎は押さえており、現場での設計品質・クエリ品質を上げたい中級以上のバックエンドエンジニアやDBエンジニア

    本の詳細を見る →
  3. リレーショナル理論で SQL を再解釈

    正規化・述語論理・関係モデルの観点から SQL を捉え直す一冊。「なぜこの書き方なら最適化されやすいか」を原理から説明できるようになる。

    理論から学ぶデータベース実践入門 : リレーションモデルによる効率的なSQL
    この章の 1 冊 理論から学ぶデータベース実践入門 : リレーションモデルによる効率的なSQL

    リレーショナルモデルの理論を起点にSQLと設計を再体系化する

    この本で身につくこと
    • 第一〜第三正規形の定義を理論的に説明し、実際のテーブル設計で正規化の判断根拠を示せる
    • Nested Loop Join の仕組みを理解し、インデックスの有無・テーブル件数・結合順序がクエリコストに与える影響を説明できる
    • NULL の三値論理(TRUE / FALSE / UNKNOWN)を正確に扱い、意図しない集計や絞り込み漏れを防止できる
    • インデックスが効く条件・効かない条件をリレーショナルモデルの観点から根拠を持って判断できる

    想定読者: SQLは書けるがリレーショナルモデルの理論を体系的に学んだことがないWebエンジニア(経験1〜3年目)

    前提知識: 基本的なSELECT / JOIN / GROUP BYを使ったSQL記述経験 / テーブル・主キー・外部キーの概念的な理解 / 何らかのRDB(MySQL / PostgreSQLなど)を実際に操作した経験

    本の詳細を見る →
  4. 達人級クエリで書き換え力を獲得

    CASE 式・ウィンドウ関数・集合演算を使い、ループや手続き的処理に逃げない SQL を書く訓練。遅いクエリを書き直せる実装力をここで詰める。

    達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ
    この章の 1 冊 達人に学ぶSQL徹底指南書 第2版 初級者で終わりたくないあなたへ

    SQLの設計思想と現代的構文を体系的に習得する

    この本で身につくこと
    • CASE式を使った条件付き集計・ピボット変換を実務クエリに応用できる
    • ウィンドウ関数で行間比較・ランキング・移動集計を手続き型ループなしに記述できる
    • EXISTS述語と量化子の意味論を理解し、NOT IN との挙動の差異を設計根拠で説明できる
    • 3値論理とNULLの振る舞いを正確に把握し、予期しないバグの原因を特定できる

    想定読者: SELECT/JOIN/GROUP BY は書けるが、CASE式・ウィンドウ関数・EXISTS述語などの高度な機能を業務で十分に活用できていない中級DBエンジニア・バックエンドエンジニア

    本の詳細を見る →
  5. DB 内部構造から実行計画を読む

    ページ・インデックス・ロック・実行計画など DB エンジンの内側を図解で学ぶ。EXPLAIN の数字が何を意味するかを内部動作と結び付ける到達点。

    絵で見てわかるSQL Serverの仕組み
    この章の 1 冊 絵で見てわかるSQL Serverの仕組み

    SQL Serverの物理構造と内部動作を図解で体系的に理解する

    この本で身につくこと
    • SQL Serverのバッファプール、ページ構造、エクステント管理など物理ストレージの仕組みを説明できる
    • クラスター化インデックスと非クラスター化インデックスの内部B-tree構造の違いを理解し、クエリプランの読み方に活かせる
    • 列ストアインデックスとインメモリOLTPオブジェクトの設計用途と適用判断ができる
    • ロックとラッチの違い、行バージョン管理(MVCC)によるブロッキング回避の原理を運用に応用できる

    想定読者: SQL Serverを使ったデータベース開発・運用を担うエンジニアのうち、クエリが遅い理由やロック競合の原因を物理レベルで追跡したい人。クラウド移行(Azure SQL Database / SQL Server on IaaS)を検討しているDBAにも有用。

    本の詳細を見る →