MD5-hashförslaget du hade är mycket bra - det finns dokumenterat i High Performance MySQL 2nd Ed. Det finns ett par knep för att få det att fungera:
CREATE TABLE urls (id NOT NULL primärnyckel auto_increment,url varchar(255) not null,url_crc32 INT UNSIGNED not null,INDEX (url_crc32));
Utvalda frågor måste se ut så här:
SELECT * FROM urls WHERE url='http://stackoverflow.com ' OCH url_crc32=crc32('http://stackoverflow.com ');
url_crc32 är utformad för att fungera med indexet, inklusive url i WHERE-satsen är utformad för att förhindra hashkollisioner.
Jag skulle nog rekommendera crc32 framför md5. Det kommer att bli några fler kollisioner, men du har större chans att få in hela indexet i minnet.