[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

DE | FR | EN | ES ]

by Hayato Matsuura

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


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

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

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

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

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

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

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

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

      2. 複合インデックス - 複数列に対するインデックス

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

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

      1. 大文字・小文字を区別する 検索 - UPPERLOWER

      2. ユーザ定義 関数 - 関数インデックスの制限

      3. インデックスの作り過ぎ - 冗長性の排除法

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

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

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

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

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

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

    6. OracleにおけるNULL - 興味深い重要なこと

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

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

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

    7. 処理しにくい条件 - よくあるアンチパターン

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

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

      3. 列の連結 - 冗長なwhere

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

協力してください

この記事が気に入ったら、私の書いた本「SQLパフォーマンス詳解」や私によるトレーニングもきっと気にいるはず。

  1. 実行 計画 - 実行計画を表示し、読み解く

    1. Db2 (LUW): 実行計画の作成処理アクセス述語とフィルタ述語の見分け方

    2. MySQL: 実行計画の作成処理アクセス述語とフィルタ述語の見分け方

    3. Oracle: 実行計画の作成処理アクセス述語とフィルタ述語の見分け方

    4. PostgreSQL: 実行計画の作成処理アクセス述語とフィルタ述語の見分け方

    5. SQL Server: 実行計画の作成処理アクセス述語とフィルタ述語の見分け方

  2. 都市伝説の 一覧 - よくある都市伝説と間違った思い込み

    1. インデックスは 劣化する

    2. 最も選択性の高い列を 最初に

    3. Oracleは NULLにインデックスを作れない

    4. 動的SQLは 遅い

  3. スキーマの 例 - CREATEINSERTの スクリプト

    Db2 - MySQL - Oracle - PostgreSQL - SQL Server

You can’t learn everything in one day. Subscribe the newsletter via E-Mail, Bluesky or RSS to gradually catch up. Have a look at modern-⁠sql.com as well.

著者について

Markus Winandの写真

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

彼の本

カバー『SQLパフォーマンス詳解』

核心をわかりやすく 解説。

Markusから購入します
(送料無料+PDF)

Amazon.co.jpで購入
(印刷版のみ)

Connect with Markus Winand

Markus Winand MailinglistsSubscribe RSS feedMarkus Winand on LinkedInMarkus Winand on XINGMarkus Winand on TwitterMarkus Winand on Bluesky
Copyright 2015-2024 Hayato Matsuura, Markus Winand. All righs reserved.
法律上の通知 | お問い合わせ | 無保証 | 商標 | プライバシーとGDPR