部分インデックス
部分インデックス(部分索引)とは、WHERE句のような条件を付けて特定行のみをインデックス化する方式で、サイズが小さく更新コストも低い。
「必要なところだけ」の小さいインデックス
部分インデックスは、WHERE句のような条件を付けて「該当する行だけ」をインデックスに含めます。 全体のごく一部にしかクエリが刺さらない場合、インデックスをフルサイズで作るのは無駄。 部分インデックスならサイズも更新コストも大幅に減らせます。
-- 通常インデックス(全行を含む) CREATE INDEX idx_users_email ON users (email); -- 検索クエリ SELECT * FROM users WHERE email = 'alice@example.com' AND deleted_at IS NULL;
全 10 件を対象とするインデックス。削除済みユーザーの分もインデックスに含まれ、その分だけ肥大化する。
(email)※ ここでは分かりやすさのためソート済みリスト風に描いているが、 実際はB-treeで保持されるので探索は O(log N)。 詳しくは B-treeの仕組み へ。
典型的なユースケース
- 論理削除された行を除外(最頻):
(email) WHERE deleted_at IS NULLのように、ソフトデリートを採用したテーブルで「アクティブ行だけ」のインデックスを作る - 特定ステータスの行だけの検索:
(order_id) WHERE status = 'pending'のように、頻繁に引く一部の状態だけをインデックス化 - NULLでない値だけのユニーク:
UNIQUE (email) WHERE email IS NOT NULLのように、NULLは許容しつつ入力された値だけ一意にしたいとき
注意点
- クエリの条件と部分インデックスの条件が一致する必要がある。少しでも違うと使われない
- 統計情報の見え方も変わるので、EXPLAINで実際に使われているか確認する
よくある疑問
関連トピック
もっと学びたい方へ(おすすめ書籍)
PostgreSQLの内部構造・ストレージ・インデックス機構を丁寧に解説。設計と運用計画の鉄則が学べる。
IPAデータベーススペシャリスト試験の総合対策書。インデックス関連は本サイトと合わせて学ぶと理解が深まる。
テーブル設計と正規化、パフォーマンス考慮のインデックス設計まで実務レベルで学べる定番書。第2版ではクラウド対応も強化。
ER 図をどう「使える設計」に落とすか、実務の判断まで踏み込んだ入門書。エンティティの切り出しから多対多の扱いまで具体例が豊富。
ドリル 256 問を実際に打ちながら進める SQL の入門書。付属のブラウザ環境で演習できるので、SELECT から結合・集約までを環境構築で止まらずに通せる。
SQLの本質的な使い方と、インデックスが効くクエリの書き方を学べる。ウィンドウ関数など現代SQLも網羅。
実務でやりがちなSQL・DB設計のアンチパターンとその回避策を体系的に学べる。
リレーショナルモデルの理論から、インデックス設計を含む実務で使えるSQLまで解説。
「なぜこの書き方が速いのか」を実行計画から説明する一冊。条件分岐・集約・結合・更新のそれぞれで、良い書き方と悪い書き方を対比しながら読める。
本セクションはAmazonアソシエイトのリンクを含みます。
もっと深くDBを学びたい方へ。
たいてっくが、SQL・データベース設計・パフォーマンスチューニング・IPAデータベーススペシャリスト対策まで、1対1で学習をサポートします。まずは無料相談から。
「教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。」
— H 様(DB・SQL コース受講)「体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。」
— M 様(DB・SQL コース受講)「大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。」
— K 様(DB・SQL コース受講)