mysql の myisam エンジンには、圧縮インデックス PACK_KEYS と呼ばれる無視しやすいものがあります。
myISAM は、デフォルトで文字列を圧縮し、整数も圧縮できます。
テーブルの作成 PACK_KEYS を使用してインデックス圧縮方法を制御できます。 PACK_KEYS は MySQL マニュアルで次のように説明されています: インデックスを小さくしたい場合は、このオプションを 1 に設定します。これを行うと通常、更新が遅くなり、読み取りが速くなります。このオプションを 0 に設定すると、すべてのキーワード圧縮が無効になります。このオプションが DEFAULT に設定されている場合、ストレージ エンジンは長い CHAR または VARCHAR カラムのみを圧縮します (MyISAM のみ)。 PACK_KEYS を使用しない場合、デフォルトのアクションでは文字列のみが圧縮され、数値は圧縮されません。 PACK_KEYS=1 を使用すると、数値も圧縮されます。 バイナリ数値キーワードを圧縮する場合、MySQL はプレフィックス圧縮を使用します: o 各キーワードには、前のキーワードの何バイトが次のキーワードと同じであるかを示す追加バイトが必要です。 o 行へのポインタは、圧縮を向上させるためにキーワードの後にハイエンディアン順に格納されます。 これは、連続する 2 行に同一のキーワードが多数ある場合、後続の「同一」キーワードは、通常、(行へのポインターを含む) 2 バイトしか占有しないことを意味します。対照的に、通常の状況では、後続のキーは storage_size_for_key + pointer_size (ポインター サイズは通常 4) を占有します。ただし、プレフィックス圧縮は、多くの数値が同一である場合にのみ有益です。すべてのキーワードが完全に異なり、キーワードに NULL 値を含めることができない場合は、キーワードごとにさらに 1 バイトが使用されます。 (この場合、圧縮されたキーワードの長さを格納するバイトは、キーワードが NULL かどうかをマークするために使用されるバイトと同じです。たとえば、「abc.pdf 」などのファイル名を保存するフィールドがあります。 、PDF は誰にとっても同じなので、次のフィールドに基づいて圧縮インデックスを使用できます:CREATE TABLE <TABLE_NAME> ( `id` INT NOT NULL , `name` VARCHAR(250) NULL , PRIMARY KEY (`id`) ) PACK_KEYS = 1; ALTER TABLE table_name PACK_KEYS = 1;