データベースインデックス(索引)
データベースの検索速度を向上させるためのデータ構造。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用語: データベースレプリケーションとは|読み取り分散と冗長化の仕組み
プライマリDBの変更をレプリカに同期するレプリケーションの仕組み・同期/非同期の違い・活用パターンを解説。
データベースマイグレーション
データベースのスキーマ(テーブル構造)変更をバージョン管理し、順序立てて適用する仕組み。Prisma Migrate・Flyway・Liquibaseが代表的なツール。
PostgreSQL(ポストグレSQL)
オープンソースのリレーショナルデータベース。ACID準拠・豊富な機能・強力なSQL拡張・JSONサポートを持ち、企業向けから個人プロジェクトまで幅広く使われる高信頼性DBMSの代表格。
レプリケーション(データベース複製)
データベースのデータを複数のサーバーに自動的にコピーする仕組み。読み取り負荷の分散・障害時のフェイルオーバー・バックアップ目的で使われる。プライマリ/レプリカ構成が一般的。
ACID特性(トランザクション4要件)
データベーストランザクションの信頼性を保証する4つの特性。原子性(Atomicity)・一貫性(Consistency)・独立性(Isolation)・永続性(Durability)の頭文字をとった概念。
IT用語: データベース正規化とは|データの重複をなくすテーブル設計の基本
第1〜第3正規形(1NF・2NF・3NF)を使いデータの冗長性を排除するデータベース正規化の手順を解説。