J'utiliserais VARCHAR
pour les données de longueur variable, mais pas pour les données de longueur fixe. Parce qu'une valeur SHA-1 est toujours 160 bits de long, le VARCHAR
gaspillerait simplement un octet supplémentaire pour la longueur du champ longueur
.
Et je ne stockerais pas non plus la valeur SHA1
revient. Parce qu'il n'utilise que 4 bits par caractère et aurait donc besoin de 160/4 =40 caractères. Mais si vous utilisez 8 bits par caractère, vous n'aurez besoin que d'un champ de 160/8 =20 caractères.
Je vous recommande donc d'utiliser BINARY(20)
et le UNHEX
fonction
pour convertir le SHA1
valeur en binaire.
J'ai comparé les exigences de stockage pour BINARY(20)
et 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
);
Avec des millions d'enregistrements binary(20)
prend 44.56M, tandis que char(40)
prend 64.57M.InnoDB
moteur.