mysql - MySQL (InnoDB) 中 UNIQUE 的用途是什么

标签 mysql unique

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

最佳答案

SHA2-512 给出 512 位,即 64 字节。或十六进制的 char(128)。

在 MySQL 5.5 中,MyISAM 的唯一索引键长度为 1000 字节,InnoDB 的唯一索引键长度为 767。

当您选择使用 AUTO_INCREMENT 代理主键时,Unique 用于强制执行自然唯一性。或者当你想要时 super 键的唯一性 enforce subtypes .等

编辑:

要强制 LOB 值的唯一性,您只需对其进行哈希处理并添加一个约束。如果您有足够多的行具有可测量的冲突风险,那么为什么数据库中有这么多 LOB 值?

关于mysql - MySQL (InnoDB) 中 UNIQUE 的用途是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8119535/

相关文章:

php - 无法使用 PDO 将文件名插入到 sql 中

php - Laravel 5.2 在 Eloquent SQL 查询中遇到问题

mysql - 在结果中包含内连接子查询?

php - SQL 连接与连接表中的 where 子句

sorting - 如何使用无痛脚本语言从列表列表中区分行?

php - 使用来自两个数据库的带有 WHERE 子句的两个表

python - 按日期查询排序的唯一文本消息对象 Django ORM

R - 识别数据框列中的常见元素

mysql - 根据MYSQL的月份和日期生成唯一id

laravel - 如何将唯一约束添加到 laravel 中现有的 foreignId 列?