Použil bych VARCHAR
pro data s proměnnou délkou, ale ne s daty s pevnou délkou. Protože hodnota SHA-1 je vždy 160 bit dlouhý, VARCHAR
jen by plýtvalo další bajt pro délku pevného pole délky
.
A také bych neukládal hodnotu SHA1
se vrací. Protože používá pouze 4 bity na znak, a proto by potřeboval 160/4 =40 znaků. Pokud ale použijete 8 bitů na znak, budete potřebovat pouze pole 160/8 =20 znaků.
Takže vám doporučuji použít BINARY(20)
a UNHEX
funkce
pro převod SHA1
hodnotu na binární.
Porovnal jsem požadavky na úložiště pro BINARY(20)
a 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
);
S milionem záznamů binary(20)
trvá 44,56 milionů, zatímco char(40)
trvá 64,57 milionů.InnoDB
motor.