【ぶぶんインデックス】
部分インデックス とは?
💡 「必要な行だけ」を束ねる、賢いインデックスの選抜制度。
📌 このページのポイント
- WHERE句で条件を付けてインデックスの対象行を絞り込む
- NULLが多い列や特定ステータスの絞り込みに特に効果的
- インデックスサイズが小さくなりストレージ節約にもなる
- PostgreSQLで標準サポート、MySQLは部分インデックス非対応
インデックスって全部の行に作るものじゃないの?
全行じゃなくていいの? なんかもったいない気がするんだけど!
逆で、全行に作る方がもったいないこともあるよ。NULLだらけの列や、ほとんど使わないステータスの行までインデックスに入れると、サイズが膨らんで遅くなるんだ。
じゃあ、よく使う条件の行だけに作れば小さくて速くなるんだね!
そう! PostgreSQLなら `CREATE INDEX ON orders (user_id) WHERE status = 'active';` みたいに書けるよ。activeな注文だけを対象にしたインデックスが出来上がるんだ。
MySQLでも使えるの?
残念ながらMySQLは部分インデックスを標準でサポートしていないんだよ。PostgreSQLやSQLiteでは使えるから、DB選びのポイントになることもあるね。
NULLが多い列にも効果的って言ってたけど、どういうこと?
📖 おまけ:英語の意味
「Partial Index」 = 部分インデックス
💬 Partial(部分的な)+ Index(索引)の組み合わせ。テーブル全体ではなく一部の行だけに索引を作るイメージだよ。