postgresql: Datentyp für md5 Message Digest?

8

Ich möchte den MD5-Nachrichtenauszug einer Zeichenfolge als Primärschlüssel einer Tabelle verwenden. Welchen Datentyp sollte ich für ein solches Feld verwenden? Welche select und insert Anweisungen sollte ich für das Feld schreiben?

    
象嘉道 13.04.2013, 00:12
quelle

2 Antworten

10

Der md5-Hash als bytea verwendet nur 16 Bytes anstelle von 32 für die Hexa-Darstellung:

%Vor%

Beide obigen Formulare funktionieren, aber um die einfachere Funktion digest zu verwenden, muss die Erweiterung pgcrypto als Superuser installiert werden:

%Vor%

Verwenden Sie die Funktion digest oder die Kombination decode und md5 wie oben, um nach einer bestimmten Zeichenfolge zu suchen:

%Vor%

Der pg_column_size Wert ist die Speichergröße. Es ist weniger als die Hälfte für die bytea im Vergleich zur Hexa-Darstellung.

    
Clodoaldo Neto 13.04.2013, 00:33
quelle
1

bytea hat einen Ein-Byte-Overhead, aber mit einer Auffüllung auf acht Bytes führt dies zu einer beträchtlichen Verschwendung.

Verwenden Sie stattdessen den Typ uuid , der nur 16 Byte verwendet. Sie müssen etwas wie REPLACE(md5::text, '-', '') as md5 verwenden, wenn Sie es auswählen, aber das sollte eine schnelle Operation sein.

    
GreenReaper 02.05.2014 21:37
quelle