Heim >Datenbank >MySQL-Tutorial >So speichern Sie einen SHA1-Hash in MySQL: VARCHAR oder BINARY?

So speichern Sie einen SHA1-Hash in MySQL: VARCHAR oder BINARY?

Linda Hamilton
Linda HamiltonOriginal
2024-11-23 22:33:14560Durchsuche

To Store a SHA1 Hash in MySQL: VARCHAR or BINARY?

SHA1-Hash-Werte in MySQL speichern: VARCHAR vs. BINARY

Beim Speichern des Ergebnisses eines SHA1-Hashs in einer MySQL-Datenbank ist das entsprechende Feldtyp und -länge müssen sorgfältig abgewogen werden. Im Gegensatz zur gängigen Praxis ist die Verwendung eines VARCHAR-Felds für diesen Zweck ineffizient.

VARCHAR vs. BINARY

Ein SHA1-Hash ist immer 160 Bit lang. VARCHAR-Felder sind für Daten variabler Länge konzipiert, verursachen jedoch einen Overhead von einem Byte für die Länge des Felds. Daher ist die Verwendung von VARCHAR für einen Wert fester Länge, wie z. B. einen SHA1-Hash, unnötig.

Binärfelder hingegen speichern Binärdaten ohne Overhead. Sie sind ideal für Werte fester Länge wie SHA1-Hashes.

Zeichendarstellung

SHA1-Hashes werden normalerweise als hexadezimale Zeichenfolgen dargestellt, die 4 Bits pro Zeichen verwenden. Um die hexadezimale Darstellung eines SHA1-Hashs in einem VARCHAR-Feld zu speichern, wären 160/4 = 40 Zeichen erforderlich. Binäre Felder verwenden jedoch 8 Bit pro Zeichen, sodass derselbe Hash in einem 160/8 = 20-Zeichen-Feld gespeichert werden kann.

Empfohlener Ansatz

Das ist es Es wird empfohlen, BINARY(20) zum Speichern von SHA1-Hashwerten in MySQL zu verwenden. Dieser Feldtyp eliminiert den mit VARCHAR verbundenen Overhead und ermöglicht eine effiziente Speicherung des Hashs. Darüber hinaus kann die UNHEX-Funktion verwendet werden, um die hexadezimale Darstellung des Hashs in eine Binärdarstellung umzuwandeln, bevor er in der Datenbank gespeichert wird.

Speichervergleich

Ein Vergleich der Speicheranforderungen zeigt, dass BINARY(20) für die Speicherung von SHA1-Hashwerten effizienter ist als CHAR(40). Bei Millionen von Datensätzen benötigt BINARY(20) beispielsweise etwa 44,56 MB Speicherplatz, während CHAR(40) 64,57 MB benötigt. Dieser Unterschied wird bei größeren Datensätzen noch deutlicher.

Das obige ist der detaillierte Inhalt vonSo speichern Sie einen SHA1-Hash in MySQL: VARCHAR oder BINARY?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn