😎

【初心者】「INDEXって何?」をゼロから、専門用語ほぼなしで理解

に公開

① まず「インデックスが無い世界」を想像

テーブルはこういうもの

users テーブル
--------------------------------
| id | name | age | address    |
--------------------------------
| 1  | 太郎 | 18  | 東京       |
| 2  | 花子 | 20  | 大阪       |
| 3  | 次郎 | 25  | 名古屋     |
| 4  | 三郎 | 20  | 福岡       |
--------------------------------

クエリ

SELECT * FROM users WHERE age = 20;

MySQLのやり方(インデックスなし)

1行目 → age = 18 ❌
2行目 → age = 20 ✅
3行目 → age = 25 ❌
4行目 → age = 20 ✅

② インデックスって何?(超重要)

インデックス = 「並んだメモ帳」
インデックスは** テーブルとは別に作られる** データです。
age にインデックスがある場合

ageインデックス(小さくて整理されている)
-----------------
18 → 行ID:1
20 → 行ID:2
20 → 行ID:4
25 → 行ID:3
-----------------

③ インデックスを使うと何が変わる?

同じクエリ

SELECT * FROM users WHERE age = 20;

MySQLの動き

  1. インデックスを見る→ 「20はここにある!」
  2. 行ID 2 と 4 をゲット
  3. テーブル本体の 2行目・4行目を取りに行く

まとめ:INDEXを一言でいうと?

INDEX(インデックス)とは
👉「探すために、あらかじめ並べて作っておくメモ帳」


  • インデックスがない場合
    • テーブルを 上から下まで全部チェック
    • データが多いほどどんどん遅くなる
    • これを フルスキャン という

  • インデックスがある場合
    • 先に 小さくて整理されたメモ帳(インデックス) を見る
    • 必要な行だけをピンポイントで取りに行く
    • 全部見なくていいので速い

Discussion