sql >> Databáze >  >> RDS >> Mysql

Ukládání hodnot hash SHA1 v MySQL

Použil bych VARCHAR pro data s proměnnou délkou, ale ne s daty s pevnou délkou. Protože hodnota SHA-1 je vždy 160 bit dlouhý, VARCHAR jen by plýtvalo další bajt pro délku pevného pole délky .

A také bych neukládal hodnotu SHA1 se vrací. Protože používá pouze 4 bity na znak, a proto by potřeboval 160/4 =40 znaků. Pokud ale použijete 8 bitů na znak, budete potřebovat pouze pole 160/8 =20 znaků.

Takže vám doporučuji použít BINARY(20) a UNHEX funkce pro převod SHA1 hodnotu na binární.

Porovnal jsem požadavky na úložiště pro BINARY(20) a 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
);

S milionem záznamů binary(20) trvá 44,56 milionů, zatímco char(40) trvá 64,57 milionů.InnoDB motor.



  1. Zkombinujte SQLite Count() se GROUP BY a přidejte do své sady výsledků sloupec „Count“

  2. Přidejte data do databáze sqlite pouze jednou a čtěte vícekrát

  3. Jak použít operátor % z rozšíření pg_trgm?

  4. Použití automatizace k urychlení testů vydání na Galera Cluster s ClusterControl