Il suggerimento di hash MD5 che hai avuto è molto buono:è documentato in High Performance MySQL 2nd Ed. Ci sono un paio di trucchi per farlo funzionare:
CREATE TABLE urls (id NOT NULL chiave primaria auto_increment,url varchar(255) not null,url_crc32 INT UNSIGNED not null,INDEX (url_crc32));
Le query selezionate devono essere simili a questa:
SELEZIONA * DA URL DOVE url='http://stackoverflow.com ' AND url_crc32=crc32('http://stackoverflow.com ');
url_crc32 è progettato per funzionare con l'indice, incluso l'URL nella clausola WHERE è progettato per prevenire collisioni di hash.
Probabilmente consiglierei crc32 su md5. Ci saranno alcune altre collisioni, ma hai maggiori possibilità di adattare tutto l'indice in memoria.