使用 id 作为主键的最佳做法是什么?

What is the best practice for using id as primary key?

对于一个小项目,我使用 id 作为自增主键。

但是我老师说在id中使用自增是错误的,因为它会在删除行时跳过数字。那么它的最佳实践是什么?我可以使用 uuid 但它不会影响性能吗?另外,如果我制作一个自定义的 uniq 密钥,那真的是唯一的吗?

自增 ID 有时会导致问题,例如在您使用复制的情况下。在这些情况下,选择 GUID。

AUTO_INCREMENT 保证唯一性,没有别的

如果你想要连续个值(没有间隙),那么你必须编写大量代码来弥补间隙等。但是你为什么需要那个?

通常有一个适用于 PRIMARY KEY 的“自然”键。一个例子是 table 个国家。 PRIMARY KEY 可以是 country_code CHAR(2).

Auto_inc 有很多情况,其中数字被跳过、丢失、烧毁等。另一个例子是 INSERT IGNORE,当它由于任何原因失败时——id 已经被保留,然后没有被使用.

UUIDs/UUIDs保证唯一,但不连续,为什么要用呢?无论如何,uuid 体积要大得多。而且,对于巨大的 table 来说,由于 'random' 的表现,效率低下。 uuid 的一个论据是它们可以由不同的客户端独立生成,而无需数据库的帮助。