開発者のためのSQLパフォーマンスの全て
前書き - インデックスの作成はなぜ開発者のタスクなのか
インデックスの 内部構造 - インデックスは何に似ているか
インデックス リーフノード - 二重連結リスト
検索 ツリー(Bツリー) - バランス木
遅いインデックス パートI - インデックスを遅くする2つの原因
where 句 - 検索のパフォーマンスを改善するためにインデックスを作成
等価 演算子 - 一致するキーの検索
プライマリキー - インデックスの使い方を確認 Try online at SQL Fiddle
複合インデックス - 複数列に対するインデックス Try online at SQL Fiddle
遅いインデックス パートII - 前の問題点が再び Try online at SQL Fiddle
関数 - where句の 中での関数
大文字・小文字を区別する 検索 -
UPPER
とLOWER
Try online at SQL Fiddleユーザ定義 関数 - 関数インデックスの制限
インデックスの作り過ぎ - 冗長性の排除法
パラメータ化 クエリ - セキュリティとパフォーマンスのために
範囲 検索 - 等価条件の一歩先へ
大なり、小なり、
BETWEEN
- 列の順番を 改めて考える Try online at SQL FiddleLIKE
フィルタに 対するインデックス - 全文検索用ではないLIKE
Try online at SQL Fiddleインデックスの結合 - 全列に それぞれインデックスを作ってはいけない理由
部分インデックス - 特定の行のみに対するインデックス
Oracleにおける
NULL
- 興味深い重要なことTry online at SQL FiddleNULL
に対する インデックス - 全てのインデックスは部分インデックスTry online at SQL FiddleNOT NULL
制約 - インデックスの使われ方に影響 Try online at SQL Fiddle部分インデックスを エミュレートする - 関数インデックスを使った方法 Try online at SQL Fiddle
難読化された条件 - よくあるアンチパターン
パフォーマンスと スケーラビリティ - ハードウェアについて
データ 量 - ずさんなインデックスが牙をむく
システム 負荷 - 本番の負荷がレスポンスタイムに与える影響
レスポンス タイムとスループット - 水平スケーラビリティ(スケールアウト
結合 処理 - 正しく使えば遅くない
データの クラスタリング - IO削減のために
フィルタ述語の意図的な使用 -
LIKE
句のチューニングのためにインデックスのみのスキャン - テーブルアクセスをなくす
索引構成 表 - テーブルを持たないクラスタ化されたインデックス
ソートと グルーピング - パイプライン化されたorder by、3番目の 力
インデックスを使った Order by - where句の 相互作用
ASC
/DESC
とNULL FIRST
/LAST
- インデックスの順番を変えるインデックスを使ったGroup By - パイプライン化されたgroup by
部分 結果 - 効果的なページング
最初のN行のみの 選択 - 最初の数行のみが必要な場合
次ページの 取得 - オフセットと検索方法の比較
窓関数 - 分析クエリを使ったページネーション
挿入、削除、 更新 - インデックスがDMLに与える影響
実行 計画 - 実行計画を表示し、読み解く
MySQL - Oracle - PostgreSQL - SQL Server
都市伝説の 一覧 - よくある都市伝説と間違った思い込み
スキーマの 例 -
CREATE
とINSERT
の スクリプトMySQL - Oracle - PostgreSQL - SQL Server