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.