インデックスとは
テーブルからデータを検索する際に使用する、特定のカラムだけを取り出してそれを並び替えたもの。
インデックスのメリット
インデックスを張ることで、データ検索時に通常よりも効率よく検索できる。
例えば以下の4カラムからなるテーブルを考える。
| id | name | address | old |
|---|---|---|---|
| 1 | Suzuki | Tokyo | 24 |
| 2 | Yamada | Osaka | 18 |
| 3 | Takahashi | Nagoya | 32 |
| 4 | Honda | Tokyo | 16 |
| 5 | Endou | Tokyo | 41 |
| 6 | Morita | Sapporo | 27 |
| 7 | Fukuda | Osaka | 26 |
| 8 | Sano | Tokyo | 19 |
| 9 | Kondou | Nagoya | 38 |
| 10 | Imai | Osaka | 30 |
このテーブルでnameのカラムを対象としたインデックスを作成すると以下のようになる。
| id | name |
|---|---|
| 5 | Endou |
| 7 | Fukuda |
| 4 | Honda |
| 10 | Imai |
| 9 | Kondou |
| 6 | Morita |
| 8 | Sano |
| 1 | Suzuki |
| 3 | Takahashi |
| 2 | Yamada |
idとnameだけのカラムでかつ、nameが昇順に並び替えて保存されることでnameで検索したときに容易にそのデータのidを取得できる。
インデックスのデメリット
- テーブルのデータとは別に独自にデータを保持するので、データが追加されたときにはインデックスにもデータが保存される。
- データ追加時に並べ替えが行われる。