Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Przechowywanie wartości skrótu SHA1 w MySQL

Użyłbym VARCHAR dla danych o zmiennej długości, ale nie dla danych o stałej długości. Ponieważ wartość SHA-1 to zawsze 160-bitowy VARCHAR zmarnowałby tylko dodatkowy bajt na długość stałej pole długości .

Nie zapisałbym też wartości SHA1 powraca. Ponieważ używa tylko 4 bitów na znak, a zatem potrzebowałby 160/4 =40 znaków. Ale jeśli używasz 8 bitów na znak, potrzebujesz tylko pola o długości 160/8 =20 znaków.

Dlatego polecam użyć BINARY(20) i UNHEX funkcja przekonwertować SHA1 wartość na binarną.

Porównałem wymagania dotyczące przechowywania dla BINARY(20) i 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
);

Z milionem rekordów binary(20) zajmuje 44,56 mln, podczas gdy char(40) zajmuje 64.57M.InnoDB silnik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC a usługa sieciowa dla Androida

  2. Funkcja hasła MySQL

  3. Przekazywanie tablicy do zapytania za pomocą klauzuli WHERE

  4. Błąd w MySQL podczas ustawiania domyślnej wartości DATE lub DATETIME

  5. Jak zmienić mysql na mysqli?