カテゴリ: MySQL 更新日: 2026/02/15

MySQLのEXPLAIN完全解説|初心者でもわかるSQLクエリ分析と実行計画の基本

MySQLのEXPLAINで何が分かるのか
MySQLのEXPLAINで何が分かるのか

先生と生徒の会話形式で理解しよう

生徒

「MySQLでEXPLAINっていうのを見たんですが、これは何をするものなんですか?」

先生

「EXPLAINは、SQLがどんな順番や方法でデータを探しているかを事前に教えてくれる仕組みです。人が名簿を探す手順をのぞき見るようなものですね。」

生徒

「パソコンを触ったことがなくても理解できますか?」

先生

「大丈夫です。紙の名簿や本を探すイメージで、順番に説明します。」

1. MySQLとSQLの基本をやさしく理解しよう

1. MySQLとSQLの基本をやさしく理解しよう
1. MySQLとSQLの基本をやさしく理解しよう

MySQL(マイエスキューエル)は、データベースと呼ばれる「大量の情報を整理して保存する箱」を管理するソフトです。データベースには、名前、年齢、メールアドレスなどの情報が、表の形で保存されています。

SQL(エスキューエル)は、その表に対して「探す」「並べる」「条件で絞る」といった指示を出すための言葉です。ノートに書かれた名簿から特定の人を探す作業を、パソコンにお願いするための命令だと思ってください。

2. EXPLAINとは何か?初心者向けの超かんたん説明

2. EXPLAINとは何か?初心者向けの超かんたん説明
2. EXPLAINとは何か?初心者向けの超かんたん説明

EXPLAIN(エクスプレイン)は、SQLを実行する前に「MySQLがどんな考え方でデータを探すか」を教えてくれる機能です。

たとえば、電話帳で名前を探すとき、最初から最後まで全部見る方法もあれば、五十音順の見出しを使う方法もあります。EXPLAINは、MySQLがどちらの探し方をするのかを事前に見せてくれる仕組みです。

3. サンプルテーブルを使って状況をイメージしよう

3. サンプルテーブルを使って状況をイメージしよう
3. サンプルテーブルを使って状況をイメージしよう

まずは、usersという名前のテーブル(表)があると仮定します。これは会員名簿のようなものです。


id | name       | age | email
---+------------+-----+-------------------
1  | 山田太郎   | 25  | taro@example.com
2  | 佐藤花子   | 19  | hanako@example.com
3  | 鈴木一郎   | 30  | ichiro@example.com
4  | 高橋次郎   | 22  | jiro@example.com
5  | 田中美咲   | 18  | misaki@example.com

この表から「年齢が20歳未満の人を探したい」ときにSQLを使います。

4. 普通のSELECT文とEXPLAINの違い

4. 普通のSELECT文とEXPLAINの違い
4. 普通のSELECT文とEXPLAINの違い

まずは、通常のSQLです。これは実際にデータを取り出します。


SELECT *
FROM users
WHERE age < 20;

実行結果は次のようになります。


id | name     | age | email
---+----------+-----+-------------------
2  | 佐藤花子 | 19  | hanako@example.com
5  | 田中美咲 | 18  | misaki@example.com

次に、同じSQLの前にEXPLAINをつけます。すると、データは取得されず、探し方の説明だけが表示されます。


EXPLAIN
SELECT *
FROM users
WHERE age < 20;

5. EXPLAINで分かる主な情報をざっくり理解

5. EXPLAINで分かる主な情報をざっくり理解
5. EXPLAINで分かる主な情報をざっくり理解

EXPLAINの結果には、いくつかの項目が表示されます。初心者の方は、まず「どれくらい大変な探し方か」を見る意識で十分です。

たとえば、全員のデータを最初から最後まで見る方法は時間がかかります。一方で、あらかじめ整理された目次を使う方法は早く終わります。

EXPLAINを見ることで、「MySQLが楽な探し方をしているか」「無駄な作業をしていないか」を確認できます。

6. 別パターンの条件検索でもEXPLAINを使ってみよう

6. 別パターンの条件検索でもEXPLAINを使ってみよう
6. 別パターンの条件検索でもEXPLAINを使ってみよう

次は、名前で検索するSQLです。


SELECT *
FROM users
WHERE name = '山田太郎';

EXPLAINをつけると、名前をどう探しているかが分かります。


EXPLAIN
SELECT *
FROM users
WHERE name = '山田太郎';

これは、名簿の中から特定の名前を探す作業を、MySQLがどんな順番で行うかを見ている状態です。

7. 並び替え(ORDER BY)とEXPLAINの関係

7. 並び替え(ORDER BY)とEXPLAINの関係
7. 並び替え(ORDER BY)とEXPLAINの関係

データを年齢順に並び替えたい場合も、EXPLAINが役立ちます。


SELECT *
FROM users
ORDER BY age;

このSQLにEXPLAINをつけることで、「並び替えにどれくらい手間がかかるか」を確認できます。


EXPLAIN
SELECT *
FROM users
ORDER BY age;

8. EXPLAINを使うメリットを初心者目線で整理

8. EXPLAINを使うメリットを初心者目線で整理
8. EXPLAINを使うメリットを初心者目線で整理

EXPLAINを使う最大のメリットは、「SQLが遅くなる原因を事前に知れること」です。

料理で例えると、完成してから味見するのではなく、作り方を見て「時間がかかりそうだな」と気づける状態です。

特にMySQL初心者やプログラミング未経験者にとっては、「今は意味が全部わからなくても、見て慣れること」が大切です。EXPLAINはSQLの裏側を知るためののぞき穴のような存在です。

カテゴリの一覧へ
新着記事
New1
PostgreSQL
PostgreSQLのLIMIT・OFFSETとパフォーマンス問題を完全解説|初心者でもわかる安全な使い方
New2
MySQL
MySQLのUPDATE文でデータを更新する基本を徹底解説|SQL初心者でもわかるデータベース更新入門
New3
PostgreSQL
PostgreSQLのOFFSET完全入門|並び替えと組み合わせてデータをスキップする方法を初心者向けに解説
New4
MySQL
MySQLで複数行INSERTを行う方法と注意点を徹底解説|SQL基礎から学ぶデータベース入門
人気記事
No.1
Java&Spring記事人気No1
PostgreSQL
PostgreSQLのDISTINCT完全ガイド|SQLで重複データを除外する方法を初心者向けに解説
No.2
Java&Spring記事人気No2
PostgreSQL
PostgreSQLの主キー・外部キーを完全解説!初心者でもわかる設定方法と考え方
No.3
Java&Spring記事人気No3
PostgreSQL
PostgreSQLのLEFT JOIN完全入門!不足データを補いながらテーブル結合する仕組みをやさしく解説
No.4
Java&Spring記事人気No4
PostgreSQL
PostgreSQLのUPDATE文の使い方(部分更新・条件更新)
No.5
Java&Spring記事人気No5
PostgreSQL
PostgreSQLとは?初心者向けに特徴をわかりやすく解説
No.6
Java&Spring記事人気No6
PostgreSQL
PostgreSQLスキーマ設計のベストプラクティス完全ガイド|初心者でもわかるデータベース整理術
No.7
Java&Spring記事人気No7
PostgreSQL
PostgreSQLスキーマ作成・削除完全ガイド!初心者でもわかるデータベース設計の基礎
No.8
Java&Spring記事人気No8
PostgreSQL
PostgreSQLの権限管理を完全解説|スキーマ単位で理解するデータベースセキュリティの基礎