对我来说,UNIQUE
关键字是为了更好地构建您的表格(将PRIMARY KEY
放在一边,用于识别目的)。例如,文件。如果您不想将相同的文件添加到数据库,则可以将其SHA-2哈希密钥用作UNIQUE KEY
。但是SHA-2是512个字符,而InnoDB的限制是255.为什么MySQL有这个限制?如何使用更大,更可靠,唯一的密钥,如SHA-2
答案 0 :(得分:3)
SHA2-512给出512位,即64字节。或者十六进制的char(128)。
MyISAM的唯一索引密钥长度为1000字节,MySQL 5.5中的InnoDB为767。
Unique用于在您选择具有AUTO_INCREMENT代理主键时强制执行自然唯一性。或者想要enforce subtypes时的超级键唯一性。等
编辑:
要强制执行LOB值的唯一性,您只需对其进行哈希并添加约束即可。如果你有足够的行来产生可测量的冲突风险,那么为什么数据库中有这么多的LOB值呢?
答案 1 :(得分:1)
在MySQL中,UNIQUE用于索引。最好不要用它来检查文本字段的唯一性。
我总是检查应用程序中的数据完整性和唯一性,而不是MySQL。