Jeg ville bruge VARCHAR
for variabel længde data, men ikke med fast længde data. Fordi en SHA-1-værdi altid er 160 bit lang, VARCHAR
ville bare spilde en ekstra byte for længden af den faste- længdefelt
.
Og jeg ville heller ikke gemme værdien >SHA1
vender tilbage. Fordi den bruger kun 4 bit pr. tegn og derfor skal bruge 160/4 =40 tegn. Men hvis du bruger 8 bit pr. tegn, skal du kun bruge et 160/8 =20 tegn langt felt.
Så jeg anbefaler dig at bruge BINARY(20)
og UNHEX
funktion
for at konvertere SHA1
værdi til binær.
Jeg sammenlignede lagerkravene for BINARY(20)
og 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
);
Med millioner af poster binary(20)
tager 44,56M, mens char(40)
tager 64,57M.InnoDB
motor.