IT用語: データベースインデックスとは|検索を高速化するB-Tree構造の仕組み
フルテーブルスキャンを避けてクエリを高速化するDBインデックスの仕組み・種類・設計の注意点を解説。
データベースインデックスとは
データベースインデックスは、テーブルのデータを高速に検索するための補助的なデータ構造です。本の索引と同様に、全ページ(全行)を読まずに目的のデータにたどり着けるようにします。適切なインデックスがあればO(n)のフルテーブルスキャンをO(log n)のツリー探索に短縮できます。
インデックスの種類
| 種類 | 特徴 |
|---|---|
| B-Tree(デフォルト) | 等値・範囲検索・ソートに対応。ほとんどの用途に適切 |
| Hash | 等値検索のみ高速。範囲検索不可 |
| 複合インデックス | 複数列の組み合わせ。列順が重要 |
| 部分インデックス | 条件を満たす行だけのインデックス |
| 全文インデックス | テキスト検索専用(LIKE %word%は使えない) |
インデックスの注意点
インデックスはSELECTを速くする代わりに、INSERT/UPDATE/DELETEが遅くなります(インデックスも更新が必要なため)。設計のポイント:
- WHERE・JOIN・ORDER BY・GROUP BY句の列に作成
- カーディナリティ(値の種類)が低い列(性別等)には効果が薄い
- インデックスを増やしすぎると書き込みが遅くなる
EXPLAIN(実行計画)で確認
EXPLAIN SELECT * FROM orders WHERE customer_id = 100;
-- type: refならインデックス使用、ALLならフルスキャン 関連する用語 (データベース)
全23件を見るACID特性(トランザクション4要件)
データベーストランザクションの信頼性を保証する4つの特性。原子性(Atomicity)・一貫性(Consistency)・独立性(Isolation)・永続性(Durability)の頭文字をとった概念。
ORM(オブジェクト関係マッピング)
プログラミング言語のオブジェクトとデータベースのテーブルを対応付け、SQLを書かずにDBを操作できるようにするライブラリ。Prisma・TypeORM・Sequelize等が代表的。
データベースインデックス(索引)
データベースの検索速度を向上させるためのデータ構造。B木・ハッシュ・全文検索等の種類があり、適切なインデックス設計はクエリパフォーマンスを劇的に改善する。
IT用語: シャーディングとは|大規模DBを水平分割してスケールアウトする手法
ユーザーIDや地域などのキーでデータを複数DBに分割するシャーディングの仕組みとデメリットを解説。
NoSQL(非リレーショナルデータベース)
固定スキーマを持たない非リレーショナル型データベースの総称。ドキュメント型・キーバリュー型・カラム型・グラフ型などがあり、水平スケーリングと柔軟なデータ構造が特徴。
IT用語: データベースレプリケーションとは|読み取り分散と冗長化の仕組み
プライマリDBの変更をレプリカに同期するレプリケーションの仕組み・同期/非同期の違い・活用パターンを解説。