第19章: OzExplain - 実行計画ツリーとインデックス推奨
概要: この章では、データベースの
EXPLAIN結果を直感的な実行計画ツリーに変換し、推定行数と実測行数の乖離を警告し、ボトルネックを解消するインデックス推奨機能について説明します。
本章の内容:
19.1 ビジュアル実行ツリー
SELECT クエリを選択して Cmd + E を押すと、OzExplain はクエリ実行計画を色分けされたノードツリーとして描画します。
- 赤色ノード(ボトルネック): フルテーブルスキャン(
ALL)、ディスクを使用した一時テーブル(using temporary)、filesortなどコストの高い処理。 - 緑色ノード(最適化済み): 主キー参照(
const,eq_ref)や B-Tree インデックスを活用した高速スキャン。
どの処理ステップがクエリ全体の遅延原因になっているかを一瞬で見極めることができます。
19.2 推定行数と実測行数の比較分析
EXPLAIN ANALYZE(MySQL)または対応する ANALYZE(MariaDB)をサポートするサーバーでは、オプティマイザの「推定処理行数」と実行時の「実測行数」を自動比較します。
乖離が 3 倍を超える場合、ノードに警告が表示されます。
ANALYZE TABLE orders; -- 実測行数 (450,000) が推定値 (1,000) を 450倍 超過しています
ヒント: この警告が出た場合、テーブル統計情報が古くなっているため、
ANALYZE TABLEを実行して統計を最新化することを強く推奨します。
19.3 インデックス推奨
フルテーブルスキャン(ALL)が検出された場合、OzExplain は適切なインデックス作成文のスケルトンを提示します。
CREATE INDEX idx_orders_opt ON orders (<フィルタ対象カラム>);
提示された候補を確認し、実運用のワークロードと照らし合わせた上で安全に適用してください。