基礎インデックスの種類

ハッシュインデックス

定義

ハッシュインデックスとは、キーの値をハッシュ関数で変換し、対応するバケットに格納・参照することでO(1)相当で等価検索を行うインデックス方式である。

ハッシュインデックスとは

ハッシュインデックス (hash index) とは、 キーの値をハッシュ関数で固定長の数値 (ハッシュ値) に変換し、 その値に対応するバケットへ格納・参照することで平均 O(1) の等価検索 を実現するインデックス方式のこと。 B-tree のように木構造を辿らず、1 回の計算でバケット位置が決まるのが最大の特徴だ。

使える場面: WHERE id = ? のような等価検索 (完全一致)。使えない場面: 範囲検索・ソート・前方一致・複合条件の先頭以外での絞り込み。 PostgreSQL の USING hash、MySQL Memory エンジン、キーバリューストア (Redis 等) の内部構造で使われる。

キーをハッシュ値に変換してバケットに配る

ハッシュインデックスの仕組みはシンプルです。キーをハッシュ関数に通して固定サイズの数値に変換し、そのバケットに格納する。 探すときも同じ関数でバケットを特定して、そこだけを見れば済みます。 件数が増えても平均O(1)で目的にたどり着けるのが強みです。

ハッシュインデックスの動き
計算の流れ

「1ステップ」で入力からバケット到達までを順に追う。「自動再生」で連続再生。

1. 入力を受け取る
2. ハッシュ関数を通す
3. 5 で割った余りを取る
4. バケット3 を線形探索
バケット 0衝突: 2件を線形探索
yamada (2,1)kobayashi (2,2)
バケット 1
kato (3,2)
バケット 2衝突: 3件を線形探索
tanaka (1,1)ito (1,3)watanabe (2,3)
バケット 3衝突: 3件を線形探索
suzuki (1,2)nakamura (2,0)takahashi (3,0)
バケット 4衝突: 2件を線形探索
sato (1,0)saito (3,1)
バケット内の各エントリは キー → 行ID の組。 「1ステップ」で入力からバケット到達までの流れを順に追う。

ハッシュインデックスの弱点

  • 範囲検索ができない: ハッシュ値は元の値の大小関係を保存しないため、WHERE id BETWEEN 10 AND 20のような検索は不可能。
  • ソートに使えない: ORDER BYを高速化する用途にも使えない。
  • 複合条件が組みにくい: 一部のカラムだけでの検索や先頭一致は不可。

使うべき場面

セッションストアのキャッシュキー引き、ユニークIDでの等価検索、インメモリDB。 逆に一般的な業務テーブルの主インデックスとしてはB-treeが選ばれることがほとんどです。

よくある疑問

Q.ハッシュインデックスがB-treeより速いのに使われる場面が少ないのはなぜ?
A.範囲検索・並び替え・複合的な条件に対応できないためです。用途が「主キーやユニーク値の等価検索」に限られます。
Q.ハッシュ衝突が起きるとどうなりますか?
A.同じバケットに複数のキーが入り、線形探索やチェーンで解決します。衝突が多いと性能が落ちるため、ハッシュ関数と負荷率の設計が重要です。

関連トピック

もっと学びたい方へ(おすすめ書籍)

[改訂3版]内部構造から学ぶPostgreSQL
勝俣智成 ほか

PostgreSQLの内部構造・ストレージ・インデックス機構を丁寧に解説。設計と運用計画の鉄則が学べる。

Amazon で見る →
おすすめ
達人に学ぶDB設計徹底指南書 第2版
ミック

テーブル設計と正規化、パフォーマンス考慮のインデックス設計まで実務レベルで学べる定番書。第2版ではクラウド対応も強化。

Amazon で見る →
おすすめ
楽々ERDレッスン (CodeZine BOOKS)
羽生章洋

ER 図をどう「使える設計」に落とすか、実務の判断まで踏み込んだ入門書。エンティティの切り出しから多対多の扱いまで具体例が豊富。

Amazon で見る →
おすすめ
スッキリわかるSQL入門 第4版 ドリル256問付き!
中山清喬/飯田理恵子

ドリル 256 問を実際に打ちながら進める SQL の入門書。付属のブラウザ環境で演習できるので、SELECT から結合・集約までを環境構築で止まらずに通せる。

Amazon で見る →
達人に学ぶSQL徹底指南書 第2版
ミック

SQLの本質的な使い方と、インデックスが効くクエリの書き方を学べる。ウィンドウ関数など現代SQLも網羅。

Amazon で見る →
SQLアンチパターン 第2版
Bill Karwin

実務でやりがちなSQL・DB設計のアンチパターンとその回避策を体系的に学べる。

Amazon で見る →
情報処理教科書 データベーススペシャリスト 2025年版
三好康之

IPAデータベーススペシャリスト試験の総合対策書。インデックス関連は本サイトと合わせて学ぶと理解が深まる。

Amazon で見る →
理論から学ぶデータベース実践入門
奥野幹也

リレーショナルモデルの理論から、インデックス設計を含む実務で使えるSQLまで解説。

Amazon で見る →
SQL実践入門 ── 高速でわかりやすいクエリの書き方
ミック

「なぜこの書き方が速いのか」を実行計画から説明する一冊。条件分岐・集約・結合・更新のそれぞれで、良い書き方と悪い書き方を対比しながら読める。

Amazon で見る →

本セクションはAmazonアソシエイトのリンクを含みます。

オンライン個別指導

もっと深くDBを学びたい方へ。

たいてっくが、SQL・データベース設計・パフォーマンスチューニング・IPAデータベーススペシャリスト対策まで、1対1で学習をサポートします。まずは無料相談から。

無料相談を予約する →
受講者の声 (DB・SQL コース)
menta レビュー原文を見る →
  • 教え方も上手で、お人柄も良いメンターです。DB周りの知識はもちろん、何より、しっかり教えてあげようという姿勢がとてもありがたかったです。データベース、SQLの学習を考えている方にはおススメです。
    H 様DB・SQL コース受講
  • 体系的に知識を教えてくださり、実際の業務でも大変役立っております。特に短い時間で効率よく知識の習得や、練習をできているのは期待以上でした。
    M 様DB・SQL コース受講
  • 大変充実したコンテンツでわかりやすいご説明をありがとうございました。基本的な質問にも丁寧にご説明いただき、また業務のご相談にも乗って頂き大変有意義な時間でした。
    K 様DB・SQL コース受講