インデックス
読み
いんでっくす
意味
- データベースで特定のカラムに対する検索を高速化するためのデータ構造でB-treeやハッシュなどの方式がある
- テーブルのフルスキャンを避け目的のデータに素早くアクセスできるようにする索引機能だが更新時のオーバーヘッドもある
- 主キーインデックス・複合インデックス・ユニークインデックスなど種類があり適切に設計しないとパフォーマンスが劣化する
比喩
辞書の見出しのようなもの。目的の単語を素早く見つけるためのガイドで全ページをめくらずに済む。
語源
Index = 索引・見出し。ラテン語のindexは指し示すものという意味
例文
- ユーザーIDカラムにB-treeインデックスを作成してSELECT文の検索速度を100倍高速化した
- 複合インデックスで姓名の両方を使った検索を最適化しクエリプランを確認してインデックスが利用されていることを検証した
- インデックスを張りすぎてINSERTやUPDATEが遅くなったため使われていないインデックスを削除してバランスを取った
よくある勘違い
- 全てのカラムにインデックスを張れば良いと思うこと → 更新処理が遅くなりストレージも無駄に消費する
- インデックスを張れば必ず高速化すると思うこと → WHERE句の書き方次第でインデックスが使われないこともある
- 主キーは自動でインデックスが張られることを知らないこと → 主キーには暗黙的にインデックスが作成される