メインコンテンツまでスキップ

「sql」タグのついた7記事

全てのタグを見る

インデックス — 検索を速くする代償

インデックスが検索を速くする仕組みと、その代わりに払う更新時のコストを解説します。複合インデックスのカラム順序、インデックスが効かない書き方、シャーディングやハッシングとの用語の区別を扱います。

サブクエリとウィンドウ関数 — 行をまたいで数える

サブクエリを置ける 3 つの位置、相関サブクエリと EXISTS、CTE で読む順に書く方法、そしてウィンドウ関数が行を畳まずに集計する仕組みを扱います。ROW_NUMBER と RANK の違い、累計、グループごとの上位 N 件の出し方と、各データベースの対応バージョンを示します。

トランザクション — ACID とコミット・ロールバック

トランザクションの基本操作 (開始・コミット・ロールバック) と ACID の 4 特性を解説します。ロールバックが取り消す範囲が自分のトランザクションに限られること、コミット後は取り消せないこと、構文エラーが発生するタイミングを扱います。

結合と集計 — 複数の表から 1 つの答えを作る

複数のテーブルを結合して集計するときの読み書きを扱います。SELECT の評価順序、内部結合と外部結合の違いを行の増減で捉える見方、1 対多で親の行が増えること、GROUP BY の粒度、COUNT(*) と COUNT(列) の違い、NULL の三値論理と「件数が合わない」ときの切り分けを扱います。