Návrh hash MD5, který jste měli, je velmi dobrý – je zdokumentován v High Performance MySQL 2nd Ed. Aby to fungovalo, existuje několik triků:
CREATE TABLE url (primární klíč id NOT NULL auto_increment,url varchar(255) not null,url_crc32 INT UNSIGNED not null,INDEX (url_crc32));
Vybrané dotazy musí vypadat takto:
SELECT * FROM urls WHERE url='http://stackoverflow.com ' AND url_crc32=crc32('http://stackoverflow.com ');
Url_crc32 je navržen pro práci s indexem, včetně adresy URL v klauzuli WHERE je navržena tak, aby zabránila kolizím hashů.
Pravděpodobně bych doporučil crc32 přes md5. Dojde k několika dalším kolizím, ale máte větší šanci, že se celý index vejde do paměti.