Ich würde VARCHAR verwenden für Daten mit variabler Länge, aber nicht für Daten mit fester Länge. Weil ein SHA-1-Wert immer ist 160 Bit lang, der VARCHAR würde nur ein zusätzliches Byte für die Länge des Fixed- Längenfeld
.
Und ich würde auch nicht den Wert
Daher empfehle ich Ihnen, BINARY(20) zu verwenden.
und der UNHEX Funktion
um den SHA1 zu konvertieren Wert in binär.
Ich habe die Speicheranforderungen für BINARY(20) verglichen und 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
);
Mit Millionen Datensätzen binary(20) dauert 44,56 MB, während char(40) benötigt 64,57 M.InnoDB Motor.