【えくすぷれいん】
EXPLAIN(実行計画) とは?
最終更新:
💡 SQLの処理手順を見て、改善の手がかりを探す
SQLを処理する実行計画を表示するコマンド。走査方法・行数・コストの見方と、実際に処理するEXPLAIN ANALYZEとの違いを説明します。
📌 このページのポイント
EXPLAINは、SQLの前に付けて使うの?
MySQLやPostgreSQLでは、例えばEXPLAIN SELECT * FROM users;のように計画を表示できるよ。どんな方法で読み、結合や並べ替えをするかを見る。製品や指定した形式で表示は異なるんだ。
全件走査なら、必ず直した方がいい?
必ず悪いわけではないよ。多くの行が必要な場合などは、まとめて読む方法が選ばれる。インデックスを使うかだけで良否を決めず、求める結果とデータ量、選ばれた処理を合わせて見よう。
rowsやcostは、そのまま時間や処理行数?
推定値で、意味を確認する必要があるよ。例えばPostgreSQLのrowsは各ノードから出る行数の見積もりで、走査した全行数ではない。costもミリ秒ではなく、設定に基づく単位。別の製品の項目と同じ意味だと思わないでね。
推定と実際の違いを調べるには?
まとめ:ざっくりこれだけ覚えればOK!
「EXPLAIN」って出てきたら「SQLの実行計画を見て、処理の手がかりを探すコマンド」と思えばだいたいOK!
📖 おまけ:英語の意味
「EXPLAIN」 = 説明する
💬 データベースに、SQLをどう処理する予定か説明してもらうイメージです。通常の計画表示と、実際に処理して値を測る機能を区別します。