2010-02-24 19 views
27

tipos de campos posibles:mejores prácticas para el almacenamiento eficiente hash MD5 en MySQL

BINARY(16) 
CHAR(32) 
BIGINT + BIGINT 

¿Cómo decidir cuál usar?

+3

Ninguno. No use MD5, es un [hash muerto] (http://valerieaurora.org/hash.html). Use SHA-2 o superior, y almacene como una serie de caracteres hexadecimales (64 caracteres). Es muy agradable de leer, de esta manera, y es el enfoque estándar. –

+0

no soy bueno en MySql pero un hash es una matriz de bytes, así que BINARY (16) debería ser el mejor, pero podría ser más difícil escribir preguntas SQL personalizadas contra Binary si eso es necesario. – Peter

+1

Un hash MD5 se expresa típicamente como un número hexadecimal de 32 dígitos. CHAR (32) funcionará bien. – thetaiko

Respuesta

43

Si la columna está indexada y usted sabe lo que está haciendo, BINARY(16) por razones de rendimiento.

De lo contrario, CHAR(32) está bien. Sin embargo, asegúrese de que la columna use el juego de caracteres ascii. (ascii_bin por ejemplo)

+15

UNHEX() convertirá un MD5 en una cadena binaria. http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_unhex – Slashterix

+1

Y a continuación, utilice HEX() al SELECCIONAR para convertir desde binario a la forma hexadecimal más legible. – Eborbob

Cuestiones relacionadas