我有一个很大的 MySQL InnoDB 表(大约 100 万条记录,每周增加 300K),比如说博客文章。该表有一个带索引的 url 字段。
通过在其中添加新记录,我正在检查具有相同 url 的现有记录。以下是查询的样子:
SELECT COUNT(*) FROM `tablename` WHERE url='http://www.google.com/';
目前系统每秒产生大约 10-20 个查询,并且这个数量将会增加。我正在考虑通过添加额外的字段来提高性能,即 URL 的 MD5 哈希。
SELECT COUNT(*) FROM `tablename` WHERE md5url=MD5('http://www.google.com/');
因此它会更短且长度恒定,与 URL 字段相比,它更适合索引。你们怎么看。是否有意义?
我朋友的另一个建议是使用 CRC32 而不是 MD5,但我不确定 CRC32 的结果有多独特。让我知道你对这个角色的 CRC32 的看法。
更新:每行的 URL 列都是唯一的。