Ciao ragazzi,

pochi giorni fa ho letto su qualche post in internet (credo un po datato) una discussione sfociata poi in quello che sembrava un utilissimo consiglio sui tipo di dati in una tabella MySql.

La discussione trattava l'utilizzo di un campo BINARY o VARBINARY per registrare un HASH a lunghezza fissa (40) eseguito da PHP. (Veniva aggiunto un "0x" prima dell'hash, ma non so perché).

Lo scopo di questo post è quello di valutare l'ottimizzazione del database e una conferma sull'utilizzo del tipo di campo corretto a questo scopo.

Sapendo che la tabella andrà a contenere migliaia di righe e verranno poi fatte delle WHERE proprio sul campo HASH, secondo voi qual'è il tipo di campo migliore da utilizzare? E perchè?

Dall'argomento che ho menzionato prima, l'utilizzo del BINARY dovrebbe portare un miglioramento delle prestazioni perché il motore del database non deve effettuare operazioni di "conversione" o altro ... io ho fatto delle prove, nella mia tabella ho un campo BINARY e un campo VARCHAR dove memorizzo lo stesso dato (hash), facendo delle simulazioni su 1000, 2000, 5000, e 10000 righe, le mie WHERE non sono poi tanto diverse come prestazioni ...

Qualcuno sa darmi un buon consiglio? Non ho mai utilizzato il campo di tipo BINARY, ma sostanzialmente mi sembra di aver capito dal DOC di MySql che :

BINARY = CHAR e
VARBINARY = VARCHAR

Sbaglio? Mi piacerebbe capire perché effettivamente sarà la tabella più "stressata" dell'intero db quindi se vi sono delle accortezze da tenere conto già in fase di progettazione sarei proprio contento ad applicarle, per ora il campo è un VARCHAR 40 INDEX. Lo lascio così?



Grazie a tutti per i commenti

PS: Parliamo di una Versione MySQL: 5.0.41