ハッシュインデックス
ハッシュインデックスとは、キーの値をハッシュ関数で変換し、対応するバケットに格納・参照することでO(1)相当で等価検索を行うインデックス方式である。
ハッシュインデックスとは
ハッシュインデックス (hash index) とは、 キーの値をハッシュ関数で固定長の数値 (ハッシュ値) に変換し、 その値に対応するバケットへ格納・参照することで平均 O(1) の等価検索 を実現するインデックス方式のこと。 B-tree のように木構造を辿らず、1 回の計算でバケット位置が決まるのが最大の特徴だ。
使える場面: WHERE id = ? のような等価検索 (完全一致)。使えない場面: 範囲検索・ソート・前方一致・複合条件の先頭以外での絞り込み。 PostgreSQL の USING hash、MySQL Memory エンジン、キーバリューストア (Redis 等) の内部構造で使われる。
キーをハッシュ値に変換してバケットに配る
ハッシュインデックスの仕組みはシンプルです。キーをハッシュ関数に通して固定サイズの数値に変換し、そのバケットに格納する。 探すときも同じ関数でバケットを特定して、そこだけを見れば済みます。 件数が増えても平均O(1)で目的にたどり着けるのが強みです。
「1ステップ」で入力からバケット到達までを順に追う。「自動再生」で連続再生。
キー → 行ID の組。 「1ステップ」で入力からバケット到達までの流れを順に追う。ハッシュインデックスの弱点
- 範囲検索ができない: ハッシュ値は元の値の大小関係を保存しないため、
WHERE id BETWEEN 10 AND 20のような検索は不可能。 - ソートに使えない:
ORDER BYを高速化する用途にも使えない。 - 複合条件が組みにくい: 一部のカラムだけでの検索や先頭一致は不可。
使うべき場面
セッションストアのキャッシュキー引き、ユニークIDでの等価検索、インメモリDB。 逆に一般的な業務テーブルの主インデックスとしてはB-treeが選ばれることがほとんどです。
よくある疑問
関連トピック
もっと学びたい方へ(おすすめ書籍)
PostgreSQLの内部構造・ストレージ・インデックス機構を丁寧に解説。設計と運用計画の鉄則が学べる。
テーブル設計と正規化、パフォーマンス考慮のインデックス設計まで実務レベルで学べる定番書。第2版ではクラウド対応も強化。
ER 図をどう「使える設計」に落とすか、実務の判断まで踏み込んだ入門書。エンティティの切り出しから多対多の扱いまで具体例が豊富。
ドリル 256 問を実際に打ちながら進める SQL の入門書。付属のブラウザ環境で演習できるので、SELECT から結合・集約までを環境構築で止まらずに通せる。
SQLの本質的な使い方と、インデックスが効くクエリの書き方を学べる。ウィンドウ関数など現代SQLも網羅。
実務でやりがちなSQL・DB設計のアンチパターンとその回避策を体系的に学べる。
IPAデータベーススペシャリスト試験の総合対策書。インデックス関連は本サイトと合わせて学ぶと理解が深まる。
リレーショナルモデルの理論から、インデックス設計を含む実務で使えるSQLまで解説。
「なぜこの書き方が速いのか」を実行計画から説明する一冊。条件分岐・集約・結合・更新のそれぞれで、良い書き方と悪い書き方を対比しながら読める。
本セクションはAmazonアソシエイトのリンクを含みます。
もっと深くDBを学びたい方へ。
たいてっくが、SQL・データベース設計・パフォーマンスチューニング・IPAデータベーススペシャリスト対策まで、1対1で学習をサポートします。まずは無料相談から。
「教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。」
— H 様(DB・SQL コース受講)「体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。」
— M 様(DB・SQL コース受講)「大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。」
— K 様(DB・SQL コース受講)