データベースインデックス(索引)
データベースの検索速度を向上させるためのデータ構造。B木・ハッシュ・全文検索等の種類があり、適切なインデックス設計はクエリパフォーマンスを劇的に改善する。
データベースインデックスとは?
インデックス(索引)は、データベースの検索速度を向上させるためのデータ構造です。本の目次と同じ役割を果たし、全行を順番にスキャン(フルテーブルスキャン)せずに目的のデータを高速で見つけられます。
インデックスの仕組み(B木)
最も一般的なB木(B-Tree)インデックスは、データを木構造で整理します。
[50]
[20] [70]
[10] [30] [60] [80]
WHERE id = 30 のクエリなら、全行スキャンではなく木を辿るだけで3ステップで見つけられます。
インデックスの種類
| 種類 | 用途 |
|---|---|
| B木(デフォルト) | 範囲検索・ソートに対応(最も汎用的) |
| ハッシュ | 完全一致検索のみ・非常に高速 |
| 全文検索(GIN/GiST) | LIKE検索・テキスト検索 |
| 複合インデックス | 複数列を組み合わせたインデックス |
| 部分インデックス | WHERE条件を絞ったインデックス |
| 一意インデックス | 重複値を禁止(UNIQUE制約) |
インデックスの注意点
- 書き込みが遅くなる: INSERT/UPDATE/DELETE時にインデックスも更新
- ディスクを使用: インデックスはストレージを消費する
- カーディナリティ: 値の種類が少ない列(フラグ等)にはインデックス効果が薄い
パフォーマンス確認
-- クエリの実行計画を確認(PostgreSQL)
EXPLAIN ANALYZE SELECT * FROM users WHERE email = 'test@example.com';
まとめ
インデックスは「クエリが遅い」と感じたら最初に確認すべき項目です。ただし無闇に増やすと書き込みが遅くなるため、実際に使われるクエリを分析してから設計することが重要です。
関連する用語 (データベース)
全23件を見るIT用語: データベースインデックスとは|検索を高速化するB-Tree構造の仕組み
フルテーブルスキャンを避けてクエリを高速化するDBインデックスの仕組み・種類・設計の注意点を解説。
IT用語: MySQLとは|世界最多採用のオープンソースリレーショナルデータベース
WordPress・ECサイト・SNSに広く使われるMySQL(MariaDB)の特徴・ストレージエンジン・チューニングを解説。
NoSQL
表形式(リレーショナル)ではない、柔軟なデータ構造を持つデータベースの総称。大量データの高速処理に強い。
PostgreSQL(ポストグレSQL)
オープンソースのリレーショナルデータベース。ACID準拠・豊富な機能・強力なSQL拡張・JSONサポートを持ち、企業向けから個人プロジェクトまで幅広く使われる高信頼性DBMSの代表格。
レプリケーション(データベース複製)
データベースのデータを複数のサーバーに自動的にコピーする仕組み。読み取り負荷の分散・障害時のフェイルオーバー・バックアップ目的で使われる。プライマリ/レプリカ構成が一般的。
IT用語: データベーストランザクションとは|ACID特性で保証するデータ整合性
DBの一連の操作をまとめて原子的に扱うトランザクションのACID特性(原子性・一貫性・独立性・持続性)を解説。