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.