Det MD5-hash-forslag, du havde, er meget godt - det er dokumenteret i High Performance MySQL 2nd Ed. Der er et par tricks til at få det til at fungere:
CREATE TABLE urls (id IKKE NULL primær nøgle auto_increment,url varchar(255) ikke null,url_crc32 INT UNSIGNED ikke null,INDEX (url_crc32));
Udvalgte forespørgsler skal se sådan ud:
SELECT * FROM urls WHERE url='http://stackoverflow.com ' OG url_crc32=crc32('http://stackoverflow.com ');
url_crc32 er designet til at arbejde med indekset, inklusive url i WHERE-sætningen er designet til at forhindre hash-kollisioner.
Jeg vil nok anbefale crc32 frem for md5. Der vil være et par flere kollisioner, men du har større chance for at passe hele indekset i hukommelsen.