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.