我有一个MYSQL 8.x表,每行都是唯一的,因为PK是自动递增的。列transactionID用于存储需要与行/记录耦合的外部transactionID。
但是有一个新的要求,我们想用相同的transactionID创建一个新行。我正在考虑添加一个新列来保存事务的GUID。
这是个好主意吗?这会很慢吗?关于uuid作为字符串还有其他思想吗? MySQL 8.0添加了可以将UUID存储为数字的UUID_TO_BIN和BIN_TO_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;
;
答案 0 :(得分:0)
由于很多原因,GUID都不适合用作主键,我在这里将不做详细介绍,而使用已经存在的auto_increment键会更快。但是,如果您还需要存储GUID,则为此添加另一列是完全合理的。您可以使用您提到的两个功能。