De MD5 hash-suggestie die je had is erg goed - het is gedocumenteerd in High Performance MySQL 2nd Ed. Er zijn een paar trucjes om het werkend te krijgen:
CREATE TABLE urls (id NOT NULL primaire sleutel auto_increment,url varchar(255) not null,url_crc32 INT UNSIGNED not null,INDEX (url_crc32));
Bepaalde zoekopdrachten moeten er als volgt uitzien:
SELECTEER * UIT url's WAAR url='http://stackoverflow.com ' AND url_crc32=crc32('http://stackoverflow.com ');
De url_crc32 is ontworpen om met de index te werken, inclusief de url in de WHERE-clausule is ontworpen om hash-botsingen te voorkomen.
Ik zou waarschijnlijk crc32 aanbevelen boven md5. Er zullen nog een paar botsingen zijn, maar je hebt een grotere kans dat de hele index in het geheugen past.