SQL 上級まとめ — 制約・設計・チューニングの全体像
この記事は、基礎から複雑なSQL,SQLチューニングまでSQLの実践的なスキルを1からマスターする「SQL入門講座の一部」です。
SQL上級シリーズ23本の総まとめです。高度なUPDATE/DELETE・UPSERT、制約と外部キー、型親和性とSTRICT、正規化とビュー、EXPLAIN QUERY PLANを起点にしたインデックス設計とチューニングを、図と記事一覧で横断整理します。
SQL 上級で学んだ文法の全体像
SQL 上級シリーズで扱った内容を、データを安全に保つ制約と設計・読みやすく正しいスキーマ・速いクエリのためのインデックスとチューニングの観点で 1 ページに整理します。
基礎で文法を、中級で集計・結合・ウィンドウ関数を身につけたうえで、上級では「正しく保ち、速く動かす」という設計とチューニングについて学びました。
各記事へのリンクから、いつでも復習に戻れます。
データを正しく保つ — 高度な書き換え・制約・外部キー・型・設計
サブクエリや結合を使う高度なUPDATE / DELETEとUPSERT、列制約と外部キー、型親和性とSTRICT、そして正規化・ビュー・設計演習までを扱いました。
下の図で、高度な DML と制約・型のグループ、設計・ビューのグループを整理します。
| 分類 | 記事 | 学べること |
|---|---|---|
| 高度な書き換え | サブクエリ・JOIN を使う UPDATE / DELETE | 相関更新・UPDATE … FROM・サブクエリ条件 DELETE |
| 高度な書き換え | UPSERT(ON CONFLICT)と一括 INSERT 応用 | INSERT … ON CONFLICT DO UPDATE・excluded・一括 INSERT |
| 制約 | 列制約 — NOT NULL / UNIQUE / CHECK / 主キー | NOT NULL / UNIQUE / CHECK / PRIMARY KEY と違反 |
| 外部キー | 外部キー制約と参照アクション | REFERENCES・ON DELETE / UPDATE・foreign_keys=ON |
| 制約変更 | 制約の追加・変更とテーブル再定義 | 制約の後付け・テーブル再構築の手順 |
| 型 | 文字列・数値・論理型と型親和性 | 型親和性・暗黙の型変換・厳格型との違い |
| 型 | 日付時刻型と STRICT テーブル | 日付時刻の保存・比較・STRICT テーブル |
| 設計 | テーブル設計と正規化 | 1NF 〜 3NF・繰り返し列の排除・3 層スキーマ |
| 設計 | ビュー(VIEW) | CREATE VIEW・ビューの利用・更新可能ビュー |
クエリを速くする — 実行計画・インデックス・チューニング
EXPLAIN QUERY PLANで計画を読み、統計と最適化器・結合アルゴリズムを理解し、インデックス設計・インデックスオンリースキャン・ソートとグループの索引化・索引が効かないパターンを押さえ、クエリ書き換えで仕上げます。
下の表で各記事を整理します。
| 分類 | 記事 | 学べること |
|---|---|---|
| 実行計画 | 実行計画の読み方 | SCAN / SEARCH / USE TEMP B-TREE などの語彙 |
| 統計 | 統計と最適化器 | ANALYZE・sqlite_stat1・選択率と計画の変化 |
| 結合 | 結合アルゴリズムと結合順序 | ネステッドループ・結合順序・自動インデックス |
| インデックス | インデックス入門 | 複合・部分・式・UNIQUE インデックスと EXPLAIN |
| インデックス | インデックス設計 | 複合の列順・左端プレフィックス・インデックスが効く条件 |
| インデックス | インデックスオンリースキャン | インデックスオンリースキャン・USING COVERING INDEX |
| インデックス | ORDER BY / GROUP BY をインデックスで | USE TEMP B-TREE 回避・ソートとグループの索引化 |
| インデックス | 索引が効かないパターン | 列に関数・暗黙型変換・LIKE・OR・式/部分索引での救済 |
| 書き換え | クエリ書き換え ① IN / EXISTS・相関除去 | IN vs EXISTS・相関の除去・半結合 / 反結合 |
| 書き換え | クエリ書き換え ② 反復排除と例題 | 反復処理の排除・サブクエリ最適化と例題 |
お疲れ様でした!
ここまでで、高度なUPDATE / DELETEとUPSERT、制約・外部キー・型・正規化・ビューによる設計、EXPLAIN QUERY PLANを起点としたインデックス設計などのチューニングを横断的に整理しました。
これは、基礎・中級・上級と積み上げてきた SQL 講座 3 段すべての完走でもあります。
本当にお疲れ様でした。
気になる記事に戻って、手元のデータでぜひ試し続けてください。