発展インデックスの種類
部分インデックス
定義
部分インデックス(部分索引)とは、WHERE句のような条件を付けて特定行のみをインデックス化する方式で、サイズが小さく更新コストも低い。
「必要なところだけ」の小さいインデックス
部分インデックスは、WHERE句のような条件を付けて「該当する行だけ」をインデックスに含めます。 全体のごく一部にしかクエリが刺さらない場合、インデックスをフルサイズで作るのは無駄。 部分インデックスならサイズも更新コストも大幅に減らせます。
SQL
-- 通常インデックス(全行を含む) CREATE INDEX idx_users_email ON users (email); -- 検索クエリ SELECT * FROM users WHERE email = 'alice@example.com' AND deleted_at IS NULL;
効果
全 10 件を対象とするインデックス。削除済みユーザーの分もインデックスに含まれ、その分だけ肥大化する。
インデックス
(email)エントリ 10 / 10
※ ここでは分かりやすさのためソート済みリスト風に描いているが、 実際はB-treeで保持されるので探索は O(log N)。 詳しくは B-treeの仕組み へ。
email
deleted_at
→ 行ID
alice@example.comNULL(1,0)
bob@example.com2025-06-01(1,1)
carol@example.comNULL(1,2)
dave@example.comNULL(1,3)
eve@example.com2025-05-20(2,0)
frank@example.comNULL(2,1)
grace@example.com2025-04-10(2,2)
henry@example.comNULL(2,3)
ivy@example.comNULL(3,0)
jack@example.comNULL(3,1)
論理削除された行を除外して「アクティブなユーザーだけのインデックス」を作る典型例。インデックスサイズと更新コストを大きく減らせる。
典型的なユースケース
- 論理削除された行を除外(最頻):
(email) WHERE deleted_at IS NULLのように、ソフトデリートを採用したテーブルで「アクティブ行だけ」のインデックスを作る - 特定ステータスの行だけの検索:
(order_id) WHERE status = 'pending'のように、頻繁に引く一部の状態だけをインデックス化 - NULLでない値だけのユニーク:
UNIQUE (email) WHERE email IS NOT NULLのように、NULLは許容しつつ入力された値だけ一意にしたいとき
注意点
- クエリの条件と部分インデックスの条件が一致する必要がある。少しでも違うと使われない
- 統計情報の見え方も変わるので、EXPLAINで実際に使われているか確認する
よくある疑問
Q.部分インデックスは全てのRDBMSで使える?
A.多くの主要RDBMSがネイティブでサポートしますが、対応していないRDBMSもあります。その場合は生成カラムなど別の仕組みで擬似的に実現するのが一般的です。使いたい場合はまず対象RDBMSの仕様を確認してください。
Q.どんなときに部分インデックスが有効?
A.「特定の状態の行だけをよく引く」「NULLでない値だけをユニークにしたい」「大量の履歴データの中でアクティブな一部だけをよく検索する」など、対象が全体の一部に偏っているケース。
関連トピック
もっと学びたい方へ(おすすめ書籍)
[改訂3版]内部構造から学ぶPostgreSQL
勝俣智成 ほか
PostgreSQLの内部構造・ストレージ・インデックス機構を丁寧に解説。設計と運用計画の鉄則が学べる。
Amazon で見る →
情報処理教科書 データベーススペシャリスト 2025年版
三好康之
IPAデータベーススペシャリスト試験の総合対策書。インデックス関連は本サイトと合わせて学ぶと理解が深まる。
Amazon で見る →
達人に学ぶDB設計徹底指南書 第2版
ミック
テーブル設計と正規化、パフォーマンス考慮のインデックス設計まで実務レベルで学べる定番書。第2版ではクラウド対応も強化。
Amazon で見る →
達人に学ぶSQL徹底指南書 第2版
ミック
SQLの本質的な使い方と、インデックスが効くクエリの書き方を学べる。ウィンドウ関数など現代SQLも網羅。
Amazon で見る →
SQLアンチパターン 第2版
Bill Karwin
実務でやりがちなSQL・DB設計のアンチパターンとその回避策を体系的に学べる。
Amazon で見る →
理論から学ぶデータベース実践入門
奥野幹也
リレーショナルモデルの理論から、インデックス設計を含む実務で使えるSQLまで解説。
Amazon で見る →
本セクションはAmazonアソシエイトのリンクを含みます。
オンライン個別指導
もっと深くDBを学びたい方へ。
たいてっくが、SQL・データベース設計・パフォーマンスチューニング・ IPAデータベーススペシャリスト対策まで、1対1で学習をサポートします。まずは無料相談から。