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

MySQLのEXPLAINとは?初心者でもわかるクエリ分析の基本を徹底解説

MySQLのEXPLAINとは?基本を解説
MySQLのEXPLAINとは?基本を解説

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

生徒

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

先生

「EXPLAINは、SQLがデータベースの中でどんな順番や方法で動くのかを、事前にのぞき見るための仕組みです。料理でいうと、完成品ではなくレシピを見る感じですね。」

生徒

「まだSQLもよく分からないんですが、それでも大丈夫ですか?」

先生

「問題ありません。パソコンを触ったことがなくても、紙の名簿を使うイメージで説明します。」

1. MySQLとデータベースの超基本

1. MySQLとデータベースの超基本
1. MySQLとデータベースの超基本

MySQL(マイエスキューエル)は、データベース管理システムと呼ばれるソフトです。データベースとは、たくさんの情報を整理して保存しておく大きな箱のようなものです。学校の名簿や住所録を思い浮かべてください。名前、年齢、メールアドレスなどが、きれいに表で並んでいます。

この表のことを「テーブル」と呼びます。縦の列は「カラム(項目)」、横の行は「レコード(1人分のデータ)」です。MySQLでは、このテーブルに対してSQLという命令文を使って操作します。

2. SQLとは何か?EXPLAINとの関係

2. SQLとは何か?EXPLAINとの関係
2. SQLとは何か?EXPLAINとの関係

SQLは、データベースにお願いをするための言葉です。「この人を探して」「この条件に合う人を全部見せて」といった指示を出します。SQLを書いて実行すると、MySQLが中のデータを探して結果を返してくれます。

EXPLAINは、そのSQLを実行する前に「どうやって探す予定なのか」を説明してもらうための命令です。結果を出すのではなく、探し方の説明書を表示します。そのため、初心者がSQLの動きを理解するのにとても役立ちます。

3. EXPLAINとは?何が分かるのか

3. EXPLAINとは?何が分かるのか
3. EXPLAINとは?何が分かるのか

MySQLのEXPLAINは、SQLの前にEXPLAINと書くだけで使えます。これにより、MySQLがテーブルをどの順番で見ているのか、全部を見るのか、一部だけを見るのかが分かります。

たとえば、本棚から本を探すときに、最初から最後まで全部見る方法と、あいうえお順の目次を使って探す方法があります。EXPLAINは「今回はどの探し方を使います」と教えてくれる機能です。

4. EXPLAINを使う前のテーブル例

4. EXPLAINを使う前のテーブル例
4. EXPLAINを使う前のテーブル例

まずは、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  | 田中美咲   | 28  | misaki@example.com

この表から、年齢が20歳未満の人を探すSQLを考えてみます。

5. 基本的なEXPLAINの使い方

5. 基本的なEXPLAINの使い方
5. 基本的なEXPLAINの使い方

通常のSQLは次のように書きます。


SELECT *
FROM users
WHERE age < 20;

このSQLの前にEXPLAINを付けます。


EXPLAIN
SELECT *
FROM users
WHERE age < 20;

これを実行すると、データは表示されず、代わりに「どのようにusersテーブルを調べるか」という情報が表示されます。たとえば、全部の行を順番に見ているのか、条件に合うところだけ見ているのかが分かります。

SQL実行後のテーブル自体は変わりません。


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  | 田中美咲   | 28  | misaki@example.com

6. EXPLAINでよく見る項目をやさしく解説

6. EXPLAINでよく見る項目をやさしく解説
6. EXPLAINでよく見る項目をやさしく解説

EXPLAINの結果には、いくつかの英単語が並びます。最初は難しく見えますが、意味は単純です。

「type」は、どんな探し方をしているかを表します。全部を見る場合や、条件に合うものだけを見る場合があります。「rows」は、何行くらい見る予定かという目安です。数字が小さいほど、楽な探し方だと考えてください。

これらは成績表のようなもので、「今回はこのくらい大変な作業ですよ」と教えてくれています。

7. インデックスとEXPLAINの関係

7. インデックスとEXPLAINの関係
7. インデックスとEXPLAINの関係

インデックスとは、本の巻末にある索引のようなものです。年齢のインデックスがあると、「20歳未満」を探すときに全部を見なくてすみます。

年齢にインデックスがある場合のSQL例です。


EXPLAIN
SELECT name, age
FROM users
WHERE age = 25;

この場合、EXPLAINの結果を見ると、少ない行だけを調べていることが分かります。これにより、SQLが速く動きます。


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  | 田中美咲   | 28  | misaki@example.com

8. ORDER BYやLIMITとEXPLAIN

8. ORDER BYやLIMITとEXPLAIN
8. ORDER BYやLIMITとEXPLAIN

並び替えや件数制限があるSQLでも、EXPLAINは役立ちます。たとえば、年齢順に並べて3人だけ表示するSQLです。


EXPLAIN
SELECT *
FROM users
ORDER BY age
LIMIT 3;

EXPLAINを見ることで、並び替えのためにどれくらいの行を使っているかが分かります。大量のデータがあるとき、この違いはとても大きくなります。


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  | 田中美咲   | 28  | misaki@example.com

9. 初心者がEXPLAINを見るときの考え方

9. 初心者がEXPLAINを見るときの考え方
9. 初心者がEXPLAINを見るときの考え方

最初は、EXPLAINのすべてを理解する必要はありません。「たくさんの行を見ているか」「少しだけ見ているか」に注目してください。rowsの数字が極端に大きい場合は、「全部探しているんだな」と考えれば十分です。

EXPLAINは、SQLのテスト勉強のようなものです。本番で実行する前に中身を確認できるので、失敗を減らせます。MySQLと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の権限管理を完全解説|スキーマ単位で理解するデータベースセキュリティの基礎