【发布时间】:2012-06-21 03:56:29
【问题描述】:
我有超过 1 亿个唯一字符串(MySQL 数据库中的 VARCHAR(100) UNIQUE)。现在我使用下面的代码从它们创建唯一哈希 (VARCHAR(32) UNIQUE) 以减少 InnoDB 表的索引大小(varchar(100) 上的唯一索引大约是 varchar(32) 字段的 3 倍)。
id = hashlib.md5(str).hexdigest()
是否有任何其他方法可以从这些字符串创建更短的 id 并做出合理的唯一性保证?
【问题讨论】:
-
SHA1?请注意,您可以使用 base-64 版本的摘要而不是十六进制版本来缩短字符串:
base64.b64encode(hashlib.md5("foo").digest()) -
您可以使用 BINARY(16) 列来存储 MD5 哈希,而无需使用十六进制或 base64 编码。