インデックス(索引)は、データベース の検索を速くするために、特定のカラムを あらかじめ並べ替えて作っておく目次 です。本の巻末索引と、まったく同じ発想です。
索引がないと、目的のデータを探すのに、先頭から1件ずつ全部を確認しなければなりません(全表走査)。データが増えるほど、これは重くなります。索引があれば、五十音順の目次から目的のページへ直行するように、狙ったレコードへ素早くたどり着けます。
flowchart LR A["インデックスなし<br/>全レコードを順に確認"] -.遅い.-> R[目的の行] B["インデックスあり<br/>目次から直行"] ==速い==> R
ただし、万能ではありません。
- 良い点 … 検索(SELECT)が速くなる。特によく条件に使う列で効果大。
- 注意点 … 索引自体を保つため、追加・更新・削除がやや重くなる。保存領域も少し増える。
そのため、よく検索する列に絞って 付けるのがコツです。むやみに増やすと、かえって遅くなることもあります。