レッスン 5
SQL フォーマットと可読性
ログ、ORM、レビューからの長い SQL を整形し、構造を見えるようにします。
長い SQL は、ログからコピーしたり ORM が生成したりするとレビューが困難です。
select u.id,u.email,o.total,case when o.total>100 then 'vip customer' else 'standard customer' end as segment from users u join orders o on o.user_id=u.id where o.created_at>='2026-01-01' and o.status in ('paid','refunded') order by o.created_at desc;
フォーマットはクエリを正しくしませんが、構造を露出します。
- 選択列がリストになります。
- JOIN ブロックが見えるようになります。
CASE分岐が読みやすくなります。- フィルタを一つずつスキャンできます。
- ソートと制限が見つけやすくなります。
有用なフォーマット習慣
アプリケーションデバッグでは、個人的な好みより一貫性を優先します。
- 主要な句を別行に置く。
- ネストした式と
CASE分岐をインデントする。 - JOIN 条件を JOIN の近くに置く。
- プロジェクト内でキーワードの大文字小文字を一貫させる。
- 意図的でない限り、プルリクエストで無関係なクエリを再フォーマットしない。
ミニファイは別の目的
SQL のミニファイは、コンパクトなスニペット向けに不要な空白とコメントを除去します。設定ファイル、コピーした例、1 行で埋め込みやすいテストに有用です。
インシデント中に人間がレビューする必要がある SQL はミニファイしないでください。デバッグ中は読みやすいフォーマットを使います。
要点
フォーマットは思考の道具です。密な文字列を、検査・議論・安全に変更できる構造に変えます。
SQL Formatter を開き、同じクエリで Format と Minify を比較し、レビュー向けか埋め込み向けかを判断してください。