Originariamente inviato da daniele_dll
Alternativamente, che è quello che ti consiglio, usa un campo BINARY 20 e al momento dell'inserimento fai una cosa molto semplice

mysql_query("INSERT INTO tabella (hash, .....) VALUES(0x" . sha1($valore_per_hash) . ", ....)");

In questo modo gli dici a mysql di inserire un valore binario nel campo hash che è un binary 20. Questo conviene per 2 motivi:
- quando lo usi nelle where mysql deve eseguire la metà del lavoro nella fase del confronto, cosa utile su grosse tabelle
- essendo un binary (o un varbinary se la tabella non è di tipo fisso) mysql fa una comparazione case sensitive ovvero non è costretto a convertire le due stringhe di dati in maiuscolo/minuscolo prima di fare la comparazione per far si che abbiano lo stesso casing

Ovviamente se sono pochi dati è indifferente, ma se già prevedi di superare il migliaio di righe nella tabella o comunque prevedi continue query con l'hash allora ti conviene farlo!

In fine se non hai bisogno di una tabella che contenga dati che debbano rimanere sul disco, come ad esempio una tabella delle sessioni, ti conviene usare una tabella di tipo MEMORY o HEAP, che è uguale, perché ti conserva la struttura su disco ma i dati stanno in memoria
messo in bacheca