mysql - 外部GUID以满足mysql中的唯一约束

标签 mysql database database-design

我有一个 MYSQL 8.x 表,每一行都是唯一的,因为 PK 是自动递增的。列transactionID用于存储需要与行/记录耦合的外部transactionID。

但是出现了新的要求,我们希望创建具有相同 transactionID 的新行。我正在考虑添加一个新列来保存事务的 GUID。

这是个好主意吗?这会很慢吗?对于 uuid 作为字符串还有什么想法吗? MySQL 8.0添加了UUID_TO_BIN和BIN_TO_UUID函数,可以将UUID存储为数字。

CREATE TABLE `testme`.`new_table` (
  `ID` INT NOT NULL AUTO_INCREMENT,
  `transactionID` INT NOT NULL,
  `maybe_uuid` VARCHAR(45) NOT NULL,
  PRIMARY KEY (`ID`));

ALTER TABLE `testme`.`new_table` 
ADD UNIQUE INDEX `index2` (`transactionID` ASC, `maybe_uuid` ASC) VISIBLE;
;

最佳答案

GUID 不太适合用作主键,原因有很多,我不会在这里详细说明,而且使用已经存在的 auto_increment 键会更快。但如果您还需要存储 GUID,那么为此添加另一列是完全合理的。您可以使用您提到的两个功能。

关于mysql - 外部GUID以满足mysql中的唯一约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56256524/

相关文章:

database - 在 Pig 中,查找表中条目的补集

oracle - 一对常量关系建模

database - 数据和存储设计以及按细节进行过滤的建模

php - Ajax MYSQL 搜索和排序结果

mysql - SQL 查询不返回预期值

java - 找不到类型为 : class java. util.ArrayList 的返回值的转换器(Spring Boot)

sql - T-SQL 从子查询中选择 MAX

mysql - 数据库设计——存储多少数据,性能与质量

sql - 在关系数据库中存储事件发生的星期几的最佳方法是什么?

php - MySQL/PHP : Update MySQL with Ajax