存储散列结果的VARCHAR字段应该有多长时间?
发布于 2009-03-05 20:00:40
我会对可变长度的数据使用VARCHAR
,但不会对固定长度的数据使用。
我也不会存储SHA1
返回的值。因为它只使用每个字符4位,因此将需要160/4 = 40个字符。
因此,我建议您使用BINARY(20)
和UNHEX
function将SHA1
值转换为二进制。
CREATE TABLE `binary` (
`id` int unsigned auto_increment primary key,
`password` binary(20) not null
);
CREATE TABLE `char` (
`id` int unsigned auto_increment primary key,
`password` char(40) not null
);
在百万条记录中,binary(20)
占4456M,而char(40)
占6457M。
发布于 2009-03-05 11:58:51
一个SHA1散列有40个字符!
发布于 2009-03-05 12:03:06
sha1的输出大小为160位。它是160/8 == 20个字符(如果使用8位字符)或160/16 = 10 (如果使用16位字符)。
https://stackoverflow.com/questions/614476
复制相似问题