首页 > 解决方案 > Mysql - uuid 列上是否需要唯一索引?

问题描述

我有存储用户文件的表,例如图像。它有一个自动递增的主键,因此很容易通过 url 猜测下一个/上一个 id 是什么,例如mydomain/file/12。虽然我有安全措施来防止未经授权的用户访问其他人的文件,但我更希望有一个更复杂的 url id,这很难猜到。

该表将有很多插入/删除,因此由于相关的性能问题,我坚持使用自动增量 id 作为主键,而不是使用 uuid 作为主键。

所以我正在考虑添加一个名为 uuid 的附加列,我可以用它来检索文件。虽然 mysql 文档指出 uuid 被设计为在空间和时间上全球唯一的数字,但我仍然需要在此列上实现唯一索引,因为没有数据库机制来防止冲突 - 如果它曾经发生过?

任何建议表示赞赏。

标签: mysqlsqluuid

解决方案


如果您想坚持该列是唯一的,请在其上创建一个唯一索引/约束。

这将防止手动插入和更新复制现有列,即使自动机制在“正常”插入时生成保证唯一值。

也就是说,如果性能是最重要的问题,那么您可能会决定——本质上——禁用“手动”插入并放弃唯一索引。这将是基于性能需求的妥协。


推荐阅读