あなたが持っていたMD5ハッシュの提案は非常に優れています-それはHighPerformanceMySQL2ndEdに文書化されています。それを機能させるためのいくつかの秘訣があります:
CREATE TABLE urls(id NOT NULL主キーauto_increment、url varchar(255)not null、url_crc32 INT UNSIGNED not null、INDEX(url_crc32));
一部のクエリは次のようになっている必要があります:
SELECT * FROM urls WHERE url =' http://stackoverflow.com 'AND url_crc32 =crc32(' http://stackoverflow.com ');
url_crc32は、インデックスで機能するように設計されています。WHERE句のurlは、ハッシュの衝突を防ぐように設計されています。
私はおそらくmd5よりもcrc32をお勧めします。さらにいくつかの衝突が発生しますが、すべてのインデックスをメモリに適合させる可能性が高くなります。