Propozycja skrótu MD5, którą miałeś, jest bardzo dobra - jest udokumentowana w 2 edycji High Performance MySQL. Jest kilka sztuczek, aby to zadziałało:
adresy URL CREATE TABLE (id NOT NULL klucz podstawowy auto_increment,url varchar(255) not null,url_crc32 INT UNSIGNED not null,INDEX (url_crc32));
Wybrane zapytania muszą wyglądać tak:
SELECT * Z adresów URL GDZIE url='http://stackoverflow.com ' AND url_crc32=crc32('http://stackoverflow.com ');
url_crc32 jest zaprojektowany do pracy z indeksem, w tym url w klauzuli WHERE ma na celu zapobieganie kolizjom hash.
Prawdopodobnie poleciłbym crc32 zamiast md5. Będzie jeszcze kilka kolizji, ale masz większą szansę na umieszczenie całego indeksu w pamięci.