在我的 MySQL 数据库中,我定义了一个表,如下所示:
CREATE TABLE `mytablex_cs` (
`id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT,
`tag` varchar(6) COLLATE utf8_bin NOT NULL DEFAULT '',
`value` text COLLATE utf8_bin NOT NULL,
PRIMARY KEY (`id`),
KEY `kt` (`tag`),
KEY `kv` (`value`(200))
) ENGINE=MyISAM AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_bin
我需要在value
字段上实现一个 UNIQUE 约束(键)。
我知道目前还不可能为blob
ortext
字段的整个值定义唯一索引,但是有一张票(?)打开以实现此类功能(请参阅此页面),建议使用创建唯一键已经为其他字段实现了类似的哈希。
现在我想使用类似的方法向表中添加另一个包含哈希的字段并在该字段上创建唯一键。
我查看了创建此哈希的可能方法,并且由于我想避免冲突(我需要插入数百万个条目),因此 RIPEMD-160 算法似乎是最好的算法,即使快速搜索给出了我有几个使用 SHA256 甚至 SHA1 和 MD5 的类似解决方案。
我完全缺乏密码学知识,那么选择这种方法的缺点是什么?
我的另一个问题是:MySQL 当前使用哪种算法来创建哈希?