MySQL中的UNIQUE(InnoDB)的目的是什么

时间:2011-11-14 09:30:50

标签: mysql unique

对我来说,UNIQUE关键字是为了更好地构建您的表格(将PRIMARY KEY放在一边,用于识别目的)。例如,文件。如果您不想将相同的文件添加到数据库,则可以将其SHA-2哈希密钥用作UNIQUE KEY。但是SHA-2是512个字符,而InnoDB的限制是255.为什么MySQL有这个限制?如何使用更大,更可靠,唯一的密钥,如SHA-2

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。