SQL 上級まとめ — 制約・設計・チューニングの全体像

この記事は、基礎から複雑なSQL,SQLチューニングまでSQLの実践的なスキルを1からマスターする「SQL入門講座の一部」です。
SQL上級シリーズ23本の総まとめです。高度なUPDATE/DELETE・UPSERT、制約と外部キー、型親和性とSTRICT、正規化とビュー、EXPLAIN QUERY PLANを起点にしたインデックス設計とチューニングを、図と記事一覧で横断整理します。

SQL 上級で学んだ文法の全体像

SQL 上級シリーズで扱った内容を、データを安全に保つ制約と設計読みやすく正しいスキーマ速いクエリのためのインデックスとチューニングの観点で 1 ページに整理します。

基礎で文法を、中級で集計・結合・ウィンドウ関数を身につけたうえで、上級では「正しく保ち、速く動かす」という設計とチューニングについて学びました。

各記事へのリンクから、いつでも復習に戻れます。

SQL 上級でできることの全体像
動かす高度な UPDATE / DELETE / UPSERT正しく保つ制約 / 外部キー / 型整理する正規化 / ビュー / 設計計画を読むEXPLAIN / 統計 / 結合速くするインデックス設計保護整理計測改善
高度な DML でデータを動かし、制約・外部キー・型でデータを正しく保ち、設計でスキーマを整理し、実行計画とインデックスでクエリを速くし。

データを正しく保つ — 高度な書き換え・制約・外部キー・型・設計

サブクエリや結合を使う高度なUPDATE / DELETEUPSERT、列制約と外部キー、型親和性とSTRICT、そして正規化・ビュー・設計演習までを扱いました。

下の図で、高度な DML と制約・型のグループ、設計・ビューのグループを整理します。

高度な書き換え・制約・型・設計の 11 記事
高度な書き換え動かすUPDATE / DELETE応用UPSERTON CONFLICT制約・型正しく保つ列制約 / 外部キー制約変更型親和性STRICT / 日付設計整理する正規化1NF 〜 3NFビュー設計演習
高度な書き換え でデータを動かし、制約・外部キー・型でデータの正しさを守り、正規化・ビュー・設計演習でスキーマを整理する。
分類記事学べること
高度な書き換えサブクエリ・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 / DELETEUPSERT、制約・外部キー・型・正規化・ビューによる設計EXPLAIN QUERY PLANを起点としたインデックス設計などのチューニングを横断的に整理しました。

これは、基礎・中級・上級と積み上げてきた SQL 講座 3 段すべての完走でもあります。

本当にお疲れ様でした。

気になる記事に戻って、手元のデータでぜひ試し続けてください。