開発者のためのSQLパフォーマンスの全て


  1. 前書き - インデックスの作成はなぜ開発者のタスクなのか

  2. インデックスの 内部構造 - インデックスは何に似ているか

    1. インデックス リーフノード - 二重連結リスト

    2. 検索 ツリー(Bツリー) - バランス木

    3. 遅いインデックス パートI - インデックスを遅くする2つの原因

  3. where 句 - 検索のパフォーマンスを改善するためにインデックスを作成

    1. 等価 演算子 - 一致するキーの検索

      1. プライマリキー - インデックスの使い方を確認 Try online at SQL Fiddle

      2. 複合インデックス - 複数列に対するインデックス Try online at SQL Fiddle

      3. 遅いインデックス パートII - 前の問題点が再び Try online at SQL Fiddle

    2. 関数 - where句の 中での関数

    3. パラメータ化 クエリ - セキュリティとパフォーマンスのために

    4. 範囲 検索 - 等価条件の一歩先へ

      1. 大なり、小なり、 BETWEEN - 列の順番を 改めて考える Try online at SQL Fiddle

      2. LIKEフィルタに 対するインデックス - 全文検索用ではないLIKETry online at SQL Fiddle

      3. インデックスの結合 - 全列に それぞれインデックスを作ってはいけない理由

    5. 部分インデックス - 特定の行のみに対するインデックス

    6. OracleにおけるNULL - 興味深い重要なことTry online at SQL Fiddle

      1. NULLに対する インデックス - 全てのインデックスは部分インデックスTry online at SQL Fiddle

      2. NOT NULL 制約 - インデックスの使われ方に影響 Try online at SQL Fiddle

      3. 部分インデックスを エミュレートする - 関数インデックスを使った方法 Try online at SQL Fiddle

    7. 難読化された条件 - よくあるアンチパターン

      1. 日付型 - DATE型には特に注意

      2. 数値文字列 - 型を混在させないこと

      3. 列の連結 - 冗長なwhere

      4. スマートなロジック - SQLを 遅くする、一番スマートな方法

      5. 数式 - データベースは 方程式を解けない

  1. パフォーマンスと スケーラビリティ - ハードウェアについて

    1. データ 量 - ずさんなインデックスが牙をむく

    2. システム 負荷 - 本番の負荷がレスポンスタイムに与える影響

    3. レスポンス タイムとスループット - 水平スケーラビリティ(スケールアウト

  2. 結合 処理 - 正しく使えば遅くない

    1. 入れ子 ループ - ORMを使用した場合のN+1問題

    2. ハッシュ 結合 - 全く違うインデックス作成のやり方

    3. ソートマージ 結合 - まるでソートされた結果のジッパー

  3. データの クラスタリング - IO削減のために

    1. フィルタ述語の意図的な使用 - LIKE句のチューニングのために

    2. インデックスのみのスキャン - テーブルアクセスをなくす

    3. 索引構成 表 - テーブルを持たないクラスタ化されたインデックス

  4. ソートと グルーピング - パイプライン化されたorder by、3番目の 力

    1. インデックスを使った Order by - where句の 相互作用

    2. ASC/DESCNULL FIRST/LAST - インデックスの順番を変える

    3. インデックスを使ったGroup By - パイプライン化されたgroup by

  5. 部分 結果 - 効果的なページング

    1. 最初のN行のみの 選択 - 最初の数行のみが必要な場合

    2. 次ページの 取得 - オフセットと検索方法の比較

    3. 窓関数 - 分析クエリを使ったページネーション

  6. 挿入、削除、 更新 - インデックスがDMLに与える影響

    1. 挿入 - インデックスから直接の 恩恵は得られない

    2. 削除 - where句に インデックスを使用

    3. 更新 - テーブルの全インデックスに影響を与えるわけではない

Photo of Markus Winand
Markus Winand氏は、開発者がSQLパフォーマンスを改善するお手伝いをしています。 彼は、SQL Performance Explainedの 著者でもあり、出張トレーニングhttp://winand.at/での リモート講義も 行っています。

?Recent questions at
Ask.Use-The-Index-Luke.com

3
votes
1
answer
188
views

pagination with nulls

Oct 15 at 15:40 Lukas Eder 16
pagination
2
votes
1
answer
1.8k
views
0
votes
2
answers
1.0k
views

different execution plans after failing over from primary to standby server

Sep 17 at 11:46 Markus Winand ♦♦ 771
oracle index update