データベースインデックス(索引)
データベースの検索速度を向上させるためのデータ構造。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件を見るNoSQL(非リレーショナルデータベース)
固定スキーマを持たない非リレーショナル型データベースの総称。ドキュメント型・キーバリュー型・カラム型・グラフ型などがあり、水平スケーリングと柔軟なデータ構造が特徴。
IT用語: Redisとは|高速インメモリデータストアの仕組みと活用パターン
メモリ上にデータを保存し高速なキャッシュ・セッション管理・Pub/Subを実現するRedisの仕組みと主要データ型を解説。
IT用語: データベーストランザクションとは|ACID特性で保証するデータ整合性
DBの一連の操作をまとめて原子的に扱うトランザクションのACID特性(原子性・一貫性・独立性・持続性)を解説。
データベースマイグレーション
データベースのスキーマ(テーブル構造)変更をバージョン管理し、順序立てて適用する仕組み。Prisma Migrate・Flyway・Liquibaseが代表的なツール。
ORM(オブジェクト関係マッピング)
プログラミング言語のオブジェクトとデータベースのテーブルを対応付け、SQLを書かずにDBを操作できるようにするライブラリ。Prisma・TypeORM・Sequelize等が代表的。
IT用語: MySQLとは|世界最多採用のオープンソースリレーショナルデータベース
WordPress・ECサイト・SNSに広く使われるMySQL(MariaDB)の特徴・ストレージエンジン・チューニングを解説。