我将使用
VARCHAR可变长度的数据,但不使用固定长度的数据。由于SHA-1值 始终为
160位长,因此
VARCHAR将仅在固定长度字段的长度上浪费一个额外的字节。
而且我也不会存储
SHA1返回的值。因为每个字符只使用4位,因此需要160/4 =
40个字符。但是,如果每个字符使用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)需要4456 万,而
char(40)需要6457万。
InnoDB发动机。



