Userei VARCHAR per dati a lunghezza variabile, ma non con dati a lunghezza fissa. Perché un valore SHA-1 è sempre Lungo 160 bit, il VARCHAR sprecherebbe solo un byte aggiuntivo per la lunghezza del fixed- campo di lunghezza
.
E inoltre non memorizzerei il valore SHA1
sta tornando. Perché utilizza solo 4 bit per carattere e quindi richiederebbe 160/4 =40 caratteri. Ma se usi 8 bit per carattere, avresti bisogno solo di un campo lungo 160/8 =20 caratteri.
Quindi ti consiglio di usare BINARY(20)
e UNHEX funzione
per convertire il SHA1 valore in binario.
Ho confrontato i requisiti di archiviazione per 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
);
Con milioni di record binary(20) richiede 44,56 milioni, mentre char(40) richiede 64,57 milioni.InnoDB motore.