sql >> Database >  >> RDS >> Mysql

SHA1-hashwaarden opslaan in MySQL

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.



  1. JSON-functies en -operators in SQLite (volledige lijst)

  2. LOAD DATA INFILE equivalent in Oracle

  3. Is er een manier om het rijnummer in Mysql te krijgen, zoals het rijnummer in orakel?

  4. Kardinaliteitsschatting voor meerdere predikaten