Usaría VARCHAR
para datos de longitud variable, pero no con datos de longitud fija. Porque un valor SHA-1 es siempre 160 bits de largo, el VARCHAR
simplemente desperdiciaría un byte adicional para la longitud del fijo- campo de longitud
.
Y tampoco almacenaría el valor SHA1
está regresando Porque usa solo 4 bits por carácter y, por lo tanto, necesitaría 160/4 =40 caracteres. Pero si usa 8 bits por carácter, solo necesitará un campo largo de 160/8 =20 caracteres.
Así que te recomiendo usar BINARY(20)
y el UNHEX
función
para convertir el SHA1
valor a binario.
Comparé los requisitos de almacenamiento para BINARY(20)
y 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
);
Con millones de registros binary(20)
toma 44.56M, mientras que char(40)
toma 64.57M.InnoDB
motor.