MyISAM
テーブルは B ツリーインデックスを使用します。 インデックスファイルのサイズは、キーを (key_length+4)/0.67
と計算し、すべてのキーに対してその値を合計して概算できます。 これは、すべてのキーがソート順に挿入され、テーブル内のキーが圧縮されていなときの最悪なケースです。
文字列のインデックスはスペース圧縮されています。 最初のインデックス部が文字列の場合、プリフィクスも圧縮されています。 文字列カラムに含まれる後続の空白が長い場合、またはそのカラムが VARCHAR
カラムであるために、必ずしもその長さがフルに使用されることがない場合は、スペース圧縮によってインデックスファイルが最悪の数値よりも小さくなります。 プリフィクスの圧縮は文字列から始まるキーで使用されます。 多くの文字列が同一のプリフィクスで始まる場合、プリフィクスの圧縮が役に立ちます。
MyISAM
テーブルでは、テーブルの作成時に PACK_KEYS=1
テーブルオプションを指定することで、数値のプリフィクスを圧縮することもできます。 数値は上位バイトから順に格納されるため、同一のプリフィクスを持つ整数キーが多数あるときに役立ちます。