Mysql
 sql >> база данни >  >> RDS >> Mysql

Съхранение на SHA1 хеш стойности в MySQL

Бих използвал VARCHAR за данни с променлива дължина, но не и с данни с фиксирана дължина. Тъй като стойността на SHA-1 е винаги 160-битова дължина, VARCHAR просто би загубил допълнителен байт за дължината на фиксираната- поле за дължина .

И също така не бих съхранил стойността SHA1 се завръща. Тъй като използва само 4 бита на знак и по този начин ще има нужда от 160/4 =40 знака. Но ако използвате 8 бита на знак, ще ви трябва само поле с дължина 160/8 =20 знака.

Затова ви препоръчвам да използвате BINARY(20) и UNHEX функция за да конвертирате SHA1 стойност в двоична.

Сравних изискванията за съхранение за BINARY(20) и 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
);

С милиони записи binary(20) отнема 44,56M, докато char(40) отнема 64,57 млн.InnoDB двигател.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Използвайте обвързан параметър няколко пъти

  2. Mysql::Грешка:Посоченият ключ беше твърде дълъг; максималната дължина на ключа е 1000 байта

  3. Как да съхранявате масиви в MySQL?

  4. MySQL заявка ГРУПА ПО ден/месец/година

  5. Има ли начин да стартирате MySQL в паметта за тестови случаи на JUnit?