如何选择我的主键?

rip*_*234 10 mysql sql database primary-key

我在选择主键时找到了这个阅读材料.

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

Dan*_*llo 11

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

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

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

  • 通常很难拥有真正独特的自然键.

  • 自然键通常是字符串.数字字段上的索引将比字符串字段上的索引更紧凑.

关于主键的数据类型应该是什么没有硬性规则.数字键通常表现更好,但您可以使用字符串,尤其是如果表不大,并且引用它的表也不大.