VARCHAR
を使用します 可変長データの場合。ただし、固定長データの場合は使用できません。 SHA-1の値は常にであるため 160ビット長、VARCHAR
固定長の追加バイトを無駄にするだけです-長さフィールド
。
また、値を保存しません SHA1
戻ってきました。 1文字あたり4ビットしか使用しないため、160/4=40文字が必要になるためです。ただし、1文字あたり8ビットを使用する場合は、160/8=20文字の長さのフィールドのみが必要になります。
したがって、 BINARY(20)
およびUNHEX
機能
SHA1
を変換します バイナリへの値。
BINARY(20)
のストレージ要件を比較しました およびCHAR(40)
。
CREATE TABLE `binary` (
`id` int unsigned auto_increment primary key,
`password` binary(20) not null
);
CREATE TABLE `char` (
`id` int unsigned auto_increment primary key,
`password` char(40) not null
);
数百万のレコードがあるbinary(20)
char(40)
が44.56Mかかるのに対し、 64.57Mかかります。InnoDB
エンジン。