😎
【初心者】「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の動き
- インデックスを見る→ 「20はここにある!」
- 行ID 2 と 4 をゲット
- テーブル本体の 2行目・4行目を取りに行く
まとめ:INDEXを一言でいうと?
INDEX(インデックス)とは
👉「探すために、あらかじめ並べて作っておくメモ帳」
- インデックスがない場合
- テーブルを 上から下まで全部チェック
- データが多いほどどんどん遅くなる
- これを フルスキャン という
- インデックスがある場合
- 先に 小さくて整理されたメモ帳(インデックス) を見る
- 必要な行だけをピンポイントで取りに行く
- 全部見なくていいので速い
Discussion