INT和VARCHAR主键之间有真正的性能差异吗?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (25)

在MySQL中,使用int与VARCHAR作为主键之间是否存在可测量的性能差异?我想使用VARCHAR作为参考列表的主键,而同事不会在INT汽车上让步_增量作为所有表的主键。

因为每个int外键引用都需要连接才能理解引用,所以int和VARCHAR之间的性能差异是可以忽略的,因此VARCHAR键将直接显示信息。

那么,有没有人对这个特定的用例以及与它相关的性能问题有过经验呢?

提问于
用户回答回答于

也就是说,可以度量应用程序中最重要的查询,因为它们处理大量数据,或者非常频繁地执行。如果这些查询从消除联接中受益,并且不受使用varchar主键的影响,那么就执行它。

不要对数据库中的所有表使用这两种策略。在某些情况下,自然密钥可能更好,但在另一些情况下,代理密钥更好。

另一些人很好地指出,在实践中,很少有一个自然的密钥不改变或有重复的,所以代孕键通常是值得的。

用户回答回答于

这跟表演无关。关键是什么能成为一个好的主键。随着时间的推移,独一无二的,不变的。可能会认为一个实体(如国家代码)不会随着时间的推移而改变,并且会成为主键的好候选人。但痛苦的经历却很少如此。

INT汽车_增量满足“唯一且随时间不变”的条件。因此有了偏好。

扫码关注云+社区