データベースのほぼ全体がメインメモリー内に収まる場合に、そのデータベースでもっとも速くクエリーを実行するには、ハッシュインデックスを使用します。InnoDB
には、テーブルに定義されたインデックスで実行される検索を監視する構造があります。ハッシュインデックスの構築がクエリーにとって有益であると
InnoDB
が判断した場合は、自動的にそのインデックスが構築されます。
ただし、ハッシュインデックスは常にテーブルに存在する
B
ツリーインデックスを基に構築されます。InnoDB
は、B ツリーインデックスに対して
InnoDB
が検出した検索パターンに応じて、任意の長さの
B
ツリーに定義されたキーの先頭部分に、ハッシュインデックスを構築できます。ハッシュ
インデックスは部分的であってもかまいません:つまり、B
ツリーインデックス全体をバッファープールにキャッシュする必要はありません。InnoDB
は、頻繁にアクセスされるインデックスページへの要求に応じてハッシュインデックスを構築します。
ある意味では、適応型ハッシュインデックスの構造を利用して、InnoDB
が十分に余裕のあるメインメモリーに適応することで、メインメモリーデータベースの構造に近づいています。