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