mysql - Mysql - uuid 列上是否需要唯一索引?
问题描述
我有存储用户文件的表,例如图像。它有一个自动递增的主键,因此很容易通过 url 猜测下一个/上一个 id 是什么,例如mydomain/file/12
。虽然我有安全措施来防止未经授权的用户访问其他人的文件,但我更希望有一个更复杂的 url id,这很难猜到。
该表将有很多插入/删除,因此由于相关的性能问题,我坚持使用自动增量 id 作为主键,而不是使用 uuid 作为主键。
所以我正在考虑添加一个名为 uuid 的附加列,我可以用它来检索文件。虽然 mysql 文档指出 uuid 被设计为在空间和时间上全球唯一的数字,但我仍然需要在此列上实现唯一索引,因为没有数据库机制来防止冲突 - 如果它曾经发生过?
任何建议表示赞赏。
解决方案
如果您想坚持该列是唯一的,请在其上创建一个唯一索引/约束。
这将防止手动插入和更新复制现有列,即使自动机制在“正常”插入时生成保证唯一值。
也就是说,如果性能是最重要的问题,那么您可能会决定——本质上——禁用“手动”插入并放弃唯一索引。这将是基于性能需求的妥协。
推荐阅读
- javascript - 对象内的对象转换为单个对象
- java - Java package naming when domain and app name are the same
- php - centos7 上用于 PHP 7.1 的 phpMyAdmin
- batch-file - 詹金斯管道在批量失败时没有失败阶段
- css - 只为单个网页为 body 标签提供自定义填充
- javascript - 如何在 Angular 中绑定多个插值模板?
- python - 如何在 XGBoost 中根据 python 中的某些标准拆分训练和测试?
- sql - 在 2 列但不同的值列上组合 2 个表 - MS Access
- c++ - 当我更改值时,变量地址中的数据不会更新
- r - R,传单,用颜色填充多边形