サイトマップ
Query Go の全ページ一覧。下に進むほど深いコンテンツへ。
- 01
- 02
リファレンス
カテゴリ別
- 03
ガイド
読み物・手順書
はじめに
ER 図
データモデル設計ガイド
- DB 設計とは — 論理設計と物理設計の全体像
- スキーマとは — 3 つの意味を整理する
- 命名規則の Tips — テーブル・カラム名で後悔しないための約束事
- 非正規化パターン集 — 正規化しすぎを意図的に壊す型
- 代理キー vs 自然キー — どちらを主キーにすべきか
- NULL 許容の判断基準 — NOT NULL を基本に
- 外部キー制約の使いどころと ON DELETE オプション
- 共通カラム設計 — 全テーブルに入れる定番列
- 論理削除 vs 物理削除 — deleted_at パターンの落とし穴
- created_at / updated_at パターンと時刻型の選び方
- ENUM vs ルックアップテーブル vs CHECK 制約
- 履歴・監査ログ設計 — 別テーブル vs システムバージョニング
- ポリモーフィック関連の罠と代替案
- 型選びの実務 — VARCHAR/TEXT/NUMERIC/JSON の使いどころ
└ 正規化DDD とデータ設計
早見表
チューニング
- クエリ高速化チェックリスト
- WHERE の左辺に関数や演算を書かない — SARGable なクエリ
- 暗黙の型キャスト — 型が揃わないとインデックスが使われない
- OR を速くする — IN / UNION ALL / EXISTS への書き換え
- インデックス入門 — 仕組みと基本
- 複合インデックスとカバリングインデックス
- インデックスの罠 — 貼りすぎ・使われない・EXPLAIN 確認
- 主キーの選び方 — UUID v4 が遅い理由と UUID v7 / BIGINT / 日付
- N+1 問題 — ORM ループの静かな殺し屋
- スロークエリの特定と対処 — slow log / pg_stat_statements
- コネクションプール — PgBouncer / RDS Proxy / プールサイズの決め方
- パーティショニング — 大きなテーブルを分ける技法
- 04
その他
補助的なガイド
- 重複行を消したい — DISTINCT / GROUP BY / ROW_NUMBER() 使い分け
- グループごとに最新1件を取得する (Greatest-N-per-group)
- JOIN をイメージで理解する
- グループごとの上位 N 件 — ROW_NUMBER / RANK / DENSE_RANK
- 行を列に変換(ピボット) — CASE / PIVOT / crosstab
- 階層構造を扱う — 隣接リスト / 再帰CTE / 経路列挙 / 入れ子集合
- 連続した期間・グループを検出する (Gaps and Islands)
- 累計を計算する — SUM() OVER (ORDER BY ...)
- ページネーション — OFFSET の罠と keyset pagination
- ランダムサンプリング — ORDER BY RANDOM() の罠と代替
- 大量 INSERT を速くする — multi-row VALUES / COPY / LOAD DATA
