ハッシュインデックスとは?
はっしゅいんでっくす
ハッシュインデックスとは、データベースでキー値をハッシュ関数で変換して格納するインデックス方式で、完全一致検索を高速に行える一方、範囲検索には向きません。
ハッシュインデックスとは、データベースのインデックス(索引)の一種で、格納するキー値にハッシュ関数を適用して得られたハッシュ値をもとにデータの位置を管理する方式です。ハッシュテーブルの仕組みをそのままインデックスに応用したものといえます。
動作の仕組みは次のとおりです。データを挿入するとき、キー値にハッシュ関数を適用して「バケット」と呼ばれる格納場所を決定し、そこにデータへのポインタを保存します。検索時も同じハッシュ関数でバケットを特定し、直接そのバケット内のデータを探すため、理論上は定数時間(O(1))での検索が可能です。
ハッシュインデックスの特徴を整理すると次のようになります。
- 完全一致検索が高速:等値比較(=)においてB-Treeインデックスより高速になるケースがあります。
- 範囲検索に不向き:ハッシュ値はデータの大小関係を保持しないため、「以上・以下」などの範囲検索には使えません。
- ハッシュ衝突:異なるキーが同じバケットに入る衝突が発生することがあり、最悪計算量が増加します。
- メモリ上での利用が主流:MySQLのMemoryストレージエンジンやRedisなどのインメモリDBで多く用いられます。
PostgreSQLもハッシュインデックスをサポートしており、バージョン10以降はWALによる耐障害性が改善されました。用途に応じてB-Treeインデックスと使い分けることが設計のポイントです。
使い方・例文
ユーザーIDやメールアドレスによる完全一致ログインチェックのように、等値比較のみが発生するカラムにハッシュインデックスを適用すると、B-Treeより高速に検索できる場合があります。
この用語をシェア
最終更新: