Ik zou VARCHAR . gebruiken voor gegevens met variabele lengte, maar niet voor gegevens met een vaste lengte. Omdat een SHA-1-waarde altijd . is 160 bit lang, de VARCHAR zou gewoon een extra byte verspillen voor de lengte van de vaste- lengte veld
.
En ik zou ook de waarde van de SHA1
keert terug. Omdat het slechts 4 bits per teken gebruikt en dus 160/4 =40 tekens nodig zou hebben. Maar als u 8 bits per teken gebruikt, heeft u alleen een veld van 160/8 =20 tekens nodig.
Dus ik raad je aan om BINARY(20)
en de UNHEX functie
om de SHA1 . te converteren waarde naar binair.
Ik heb de opslagvereisten vergeleken voor BINARY(20) en 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
);
Met miljoen records binary(20) duurt 44.56M, terwijl char(40) duurt 64.57M.InnoDB motor.