一尘不染

如何选择我的主键?

mysql

我在选择主键时发现了此阅读材料。

  • 是否有关于如何为给定表选择主键的指南/博客文章?
  • 我应该使用自动递增/生成的密钥,还是应该将主密钥基于要建模的数据(假设它具有真正唯一的字段)?
  • 出于性能考虑,主键是否应该总是很长,或者即使它是字符串,我也可以将外部唯一ID作为主键吗?

阅读 227

收藏
2020-05-17

共1个答案

一尘不染

我相信在实践中使用自然键很少比代理键好

以下是使用自然键作为主键的主要缺点:

  • 您可能有不正确的键值,或者您可能只是想重命名键值。要对其进行编辑,您将必须更新将其用作外键的所有表。

  • 拥有真正独特的自然密钥通常很困难。

  • 自然键通常是字符串。数字字段上的索引比字符串字段上的索引紧凑得多。

对于主键的数据类型应该没有硬性规定。通常,数字键的性能更好,但是您可以使用字符串,尤其是在表不大且引用该表的表也不大的情况下。

2020-05-17