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