Eu usaria
VARCHAR para dados de comprimento variável, mas não com dados de comprimento fixo. Como um valor SHA-1 é sempre 160 bits, o VARCHAR apenas desperdiçaria um byte adicional para o comprimento do fixo- campo de comprimento
. E eu também não armazenaria o valor do
SHA1
está voltando. Porque ele usa apenas 4 bits por caractere e, portanto, precisaria de 160/4 =40 caracteres. Mas se você usar 8 bits por caractere, precisará apenas de um campo de 160/8 =20 caracteres. Portanto, recomendo que você use
BINARY(20)
e o UNHEX função
para converter o SHA1 valor para binário. Comparei os requisitos de armazenamento para
BINARY(20) e 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
);
Com milhões de registros
binary(20) leva 44,56M, enquanto char(40) leva 64,57 M.InnoDB motor.